{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# toad Tutorial \n",
    "\n",
    "Toad is a Python toolkit for professional model developers - a part of its functionality is specific for scorecard development. The toad package is countiously being upgraded and added for new features. We will introduce the key functionality in this tutorial, including:\n",
    "\n",
    "1. EDA-related functions \n",
    "2. how to use toad to fine tune feature binning and conduct feature selection\n",
    "3. WOE transformation \n",
    "4. stepwise feature selection \n",
    "5. model evaluation and validation\n",
    "6. scorecard transformation \n",
    "7. other functions\n",
    "\n",
    "-----------------\n",
    "-----------------\n",
    "\n",
    "### This tutorial will demonstrate how to use toad to model data of high dimension with efficiency. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "***Install and upgrade：***\n",
    "1. pip：!pip install toad\n",
    "2. conda：conda install toad --channel conda-forge\n",
    "3. update：!pip install -U toad; conda install -U toad --channel conda-forge\n",
    "\n",
    "***Feel free to open new issues on our [github](https://github.com/amphibian-dev/toad)***\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import toad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\nPlease upgrade to the latest version\\n'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''\n",
    "Please upgrade to the latest version\n",
    "'''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-----------------------\n",
    "### <font color='blue'>### 0. Load data</font>\n",
    "\n",
    "The demo data has 165 dimensions, including one ID column, a target variable, and a month column. The feature columns contain both categorical and numerical features, with several having missing data. \n",
    "\n",
    "***This demo will showcase how toad can efficiently and effectively help model development for such dirty / nasty dataset.  ***\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape: (108940, 167)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>APP_ID_C</th>\n",
       "      <th>target</th>\n",
       "      <th>var_d1</th>\n",
       "      <th>var_d2</th>\n",
       "      <th>var_d3</th>\n",
       "      <th>var_d4</th>\n",
       "      <th>var_d5</th>\n",
       "      <th>var_d6</th>\n",
       "      <th>var_d7</th>\n",
       "      <th>var_d8</th>\n",
       "      <th>...</th>\n",
       "      <th>var_l_118</th>\n",
       "      <th>var_l_119</th>\n",
       "      <th>var_l_120</th>\n",
       "      <th>var_l_121</th>\n",
       "      <th>var_l_122</th>\n",
       "      <th>var_l_123</th>\n",
       "      <th>var_l_124</th>\n",
       "      <th>var_l_125</th>\n",
       "      <th>var_l_126</th>\n",
       "      <th>month</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>app_1</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>816.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Post-Graduate</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>SELF-EMPLOYED</td>\n",
       "      <td>Y</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>app_2</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>841.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Post-Graduate</td>\n",
       "      <td>F</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>SALARIED</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>app_3</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>791.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Post-Graduate</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>PROPRIETOR</td>\n",
       "      <td>Y</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.088235</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.011494</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>app_4</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>821.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Graduate</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>SELF-EMPLOYED</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>app_5</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>807.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Graduate</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>SALARIED</td>\n",
       "      <td>Y</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.540541</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.285714</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>app_6</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>788.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Others</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>SALARIED</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>app_7</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>779.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Graduate</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>ATTORNEY AT LAW</td>\n",
       "      <td>Y</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.380952</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.571429</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>app_8</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>801.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Post-Graduate</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>SAL(RETIRAL AGE 60)</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>app_9</td>\n",
       "      <td>0</td>\n",
       "      <td>Hit-6+ Vintage</td>\n",
       "      <td>815.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Graduate</td>\n",
       "      <td>F</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Y</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>app_10</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>804.0</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>Graduate</td>\n",
       "      <td>M</td>\n",
       "      <td>RESIDENT INDIAN</td>\n",
       "      <td>PROPRIETOR</td>\n",
       "      <td>N</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2019-03</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 167 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  APP_ID_C  target          var_d1  var_d2           var_d3         var_d4  \\\n",
       "0    app_1       0  Hit-6+ Vintage   816.0  RESIDENT INDIAN  Post-Graduate   \n",
       "1    app_2       0             NaN   841.0  RESIDENT INDIAN  Post-Graduate   \n",
       "2    app_3       0  Hit-6+ Vintage   791.0  RESIDENT INDIAN  Post-Graduate   \n",
       "3    app_4       0  Hit-6+ Vintage   821.0  RESIDENT INDIAN       Graduate   \n",
       "4    app_5       0  Hit-6+ Vintage   807.0  RESIDENT INDIAN       Graduate   \n",
       "5    app_6       0  Hit-6+ Vintage   788.0  RESIDENT INDIAN         Others   \n",
       "6    app_7       0  Hit-6+ Vintage   779.0  RESIDENT INDIAN       Graduate   \n",
       "7    app_8       0  Hit-6+ Vintage   801.0  RESIDENT INDIAN  Post-Graduate   \n",
       "8    app_9       0  Hit-6+ Vintage   815.0  RESIDENT INDIAN       Graduate   \n",
       "9   app_10       0             NaN   804.0  RESIDENT INDIAN       Graduate   \n",
       "\n",
       "  var_d5           var_d6               var_d7 var_d8  ...  var_l_118  \\\n",
       "0      M  RESIDENT INDIAN        SELF-EMPLOYED      Y  ...        0.0   \n",
       "1      F  RESIDENT INDIAN             SALARIED      N  ...        0.0   \n",
       "2      M  RESIDENT INDIAN           PROPRIETOR      Y  ...        0.0   \n",
       "3      M  RESIDENT INDIAN        SELF-EMPLOYED      N  ...        0.0   \n",
       "4      M  RESIDENT INDIAN             SALARIED      Y  ...        0.0   \n",
       "5      M  RESIDENT INDIAN             SALARIED      N  ...        0.0   \n",
       "6      M  RESIDENT INDIAN      ATTORNEY AT LAW      Y  ...        0.0   \n",
       "7      M  RESIDENT INDIAN  SAL(RETIRAL AGE 60)      N  ...        0.0   \n",
       "8      F  RESIDENT INDIAN                  NaN      Y  ...        0.0   \n",
       "9      M  RESIDENT INDIAN           PROPRIETOR      N  ...        0.0   \n",
       "\n",
       "  var_l_119  var_l_120  var_l_121  var_l_122  var_l_123  var_l_124  var_l_125  \\\n",
       "0  0.000000        0.0   0.000000        0.0   0.000000        0.0   0.000000   \n",
       "1  0.000000        0.0   0.000000        0.0   0.000000        0.0   0.000000   \n",
       "2  0.088235        0.0   0.100000        0.0   0.011494        0.5   0.000000   \n",
       "3  0.000000        0.0   0.000000        0.0   0.000000        0.0   0.000000   \n",
       "4  0.000000        0.0   0.000000        0.0   0.540541        0.0   0.285714   \n",
       "5  0.000000        0.0   0.000000        0.0   0.000000        0.0   0.000000   \n",
       "6  0.722222        0.0   0.777778        0.0   0.380952        0.0   0.571429   \n",
       "7  0.000000        0.0   0.000000        0.0   0.000000        0.0   0.000000   \n",
       "8  0.000000        0.0   0.000000        0.0   0.000000        0.0   0.000000   \n",
       "9  0.000000        0.0   0.000000        0.0   0.000000        0.0   0.000000   \n",
       "\n",
       "   var_l_126    month  \n",
       "0        0.0  2019-03  \n",
       "1        0.0  2019-03  \n",
       "2        0.0  2019-03  \n",
       "3        0.0  2019-03  \n",
       "4        0.0  2019-03  \n",
       "5        0.0  2019-03  \n",
       "6        0.0  2019-03  \n",
       "7        0.0  2019-03  \n",
       "8        0.0  2019-03  \n",
       "9        0.0  2019-03  \n",
       "\n",
       "[10 rows x 167 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('train.csv')\n",
    "print('Shape:',data.shape)\n",
    "data.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### The dataset contains monthly data from Mar, 2019 - Jul, 2019. We will use Mar and Apr data as training sample and May, Jun, Jul data as out-of-time (OOT) sample."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "month: ['2019-03' '2019-04' '2019-05' '2019-06' '2019-07']\n"
     ]
    }
   ],
   "source": [
    "print('month:',data.month.unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train size: (43576, 167) \n",
      "OOT size: (65364, 167)\n"
     ]
    }
   ],
   "source": [
    "train = data.loc[data.month.isin(['2019-03','2019-04'])==True,:]\n",
    "OOT = data.loc[data.month.isin(['2019-03','2019-04'])==False,:]\n",
    "\n",
    "print('train size:',train.shape,'\\nOOT size:',OOT.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-----------------------\n",
    "### <font color='blue'>### I. EDA functions</font>\n",
    "\n",
    "#### 1. toad.detect(dataframe): \n",
    "\n",
    "To EDA data statics and other information. The columns output the statistical summary of each column. The ones that should be paid attention with are: no. of missing, no. of unqiue values, mean for numerical features, mode for categorical features, etc. As per the cell below, the takeaway should include:\n",
    "\n",
    "a. postive samples account for 2.2%: the mean of traget col is 0.0219479\n",
    "\n",
    "b. several features have different amount of missing values: notice the missing col.\n",
    "\n",
    "c. there are both categoical and numerical features. The unique values of several categorical features are high - from 10 to even 84: notice the unqiue col for features of type==object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>type</th>\n",
       "      <th>size</th>\n",
       "      <th>missing</th>\n",
       "      <th>unique</th>\n",
       "      <th>mean_or_top1</th>\n",
       "      <th>std_or_top2</th>\n",
       "      <th>min_or_top3</th>\n",
       "      <th>1%_or_top4</th>\n",
       "      <th>10%_or_top5</th>\n",
       "      <th>50%_or_bottom5</th>\n",
       "      <th>75%_or_bottom4</th>\n",
       "      <th>90%_or_bottom3</th>\n",
       "      <th>99%_or_bottom2</th>\n",
       "      <th>max_or_bottom1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>APP_ID_C</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>0.00%</td>\n",
       "      <td>43576</td>\n",
       "      <td>app_36227:0.00%</td>\n",
       "      <td>app_29819:0.00%</td>\n",
       "      <td>app_35476:0.00%</td>\n",
       "      <td>app_10104:0.00%</td>\n",
       "      <td>app_35794:0.00%</td>\n",
       "      <td>app_25789:0.00%</td>\n",
       "      <td>app_36858:0.00%</td>\n",
       "      <td>app_12750:0.00%</td>\n",
       "      <td>app_24:0.00%</td>\n",
       "      <td>app_13004:0.00%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>target</th>\n",
       "      <td>int64</td>\n",
       "      <td>43576</td>\n",
       "      <td>0.00%</td>\n",
       "      <td>2</td>\n",
       "      <td>0.0213191</td>\n",
       "      <td>0.144447</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d1</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>37.57%</td>\n",
       "      <td>2</td>\n",
       "      <td>Hit-6+ Vintage:60.32%</td>\n",
       "      <td>Hit-lt 6 Vinta:2.10%</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Hit-6+ Vintage:60.32%</td>\n",
       "      <td>Hit-lt 6 Vinta:2.10%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d2</th>\n",
       "      <td>float64</td>\n",
       "      <td>43576</td>\n",
       "      <td>5.44%</td>\n",
       "      <td>389</td>\n",
       "      <td>570.492</td>\n",
       "      <td>355.565</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>778</td>\n",
       "      <td>810</td>\n",
       "      <td>832</td>\n",
       "      <td>864</td>\n",
       "      <td>900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d3</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>5.31%</td>\n",
       "      <td>6</td>\n",
       "      <td>RESIDENT INDIAN:94.00%</td>\n",
       "      <td>NON-RESIDENT INDIAN:0.64%</td>\n",
       "      <td>PARTNERSHIP FIRM:0.02%</td>\n",
       "      <td>PRIVATE LTD COMPANIES:0.02%</td>\n",
       "      <td>PUBLIC LTD COMPANIES:0.00%</td>\n",
       "      <td>NON-RESIDENT INDIAN:0.64%</td>\n",
       "      <td>PARTNERSHIP FIRM:0.02%</td>\n",
       "      <td>PRIVATE LTD COMPANIES:0.02%</td>\n",
       "      <td>PUBLIC LTD COMPANIES:0.00%</td>\n",
       "      <td>OVERSEAS CITIZEN OF INDIA:0.00%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d4</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>1.08%</td>\n",
       "      <td>5</td>\n",
       "      <td>Graduate:55.30%</td>\n",
       "      <td>Post-Graduate:21.57%</td>\n",
       "      <td>Others:10.71%</td>\n",
       "      <td>Under Graduate:10.67%</td>\n",
       "      <td>Professional:0.67%</td>\n",
       "      <td>Graduate:55.30%</td>\n",
       "      <td>Post-Graduate:21.57%</td>\n",
       "      <td>Others:10.71%</td>\n",
       "      <td>Under Graduate:10.67%</td>\n",
       "      <td>Professional:0.67%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d5</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>1.08%</td>\n",
       "      <td>3</td>\n",
       "      <td>M:79.70%</td>\n",
       "      <td>F:14.33%</td>\n",
       "      <td>O:4.89%</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>M:79.70%</td>\n",
       "      <td>F:14.33%</td>\n",
       "      <td>O:4.89%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d6</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>1.08%</td>\n",
       "      <td>13</td>\n",
       "      <td>RESIDENT INDIAN:93.34%</td>\n",
       "      <td>PRIVATE LTD COMPANIES:2.57%</td>\n",
       "      <td>PARTNERSHIP FIRM:1.45%</td>\n",
       "      <td>PUBLIC LTD COMPANIES:0.73%</td>\n",
       "      <td>NON-RESIDENT INDIAN:0.64%</td>\n",
       "      <td>CO-OPERATIVE SOCIETIES:0.01%</td>\n",
       "      <td>LIMITED LIABILITY PARTNERSHIP:0.00%</td>\n",
       "      <td>ASSOCIATION:0.00%</td>\n",
       "      <td>TRUST-NGO:0.00%</td>\n",
       "      <td>OVERSEAS CITIZEN OF INDIA:0.00%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d7</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>1.60%</td>\n",
       "      <td>84</td>\n",
       "      <td>SALARIED:31.43%</td>\n",
       "      <td>PROPRIETOR:31.31%</td>\n",
       "      <td>SELF-EMPLOYED:10.74%</td>\n",
       "      <td>OTHERS:6.40%</td>\n",
       "      <td>FIRST TIME USERS:2.72%</td>\n",
       "      <td>NURSE:0.00%</td>\n",
       "      <td>PHARMACIST:0.00%</td>\n",
       "      <td>RETAIL BUS OPERATOR:0.00%</td>\n",
       "      <td>PRIVATE TAILOR:0.00%</td>\n",
       "      <td>TAXI DRIVER:0.00%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d8</th>\n",
       "      <td>object</td>\n",
       "      <td>43576</td>\n",
       "      <td>1.08%</td>\n",
       "      <td>2</td>\n",
       "      <td>Y:59.90%</td>\n",
       "      <td>N:39.03%</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Y:59.90%</td>\n",
       "      <td>N:39.03%</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             type   size missing  unique            mean_or_top1  \\\n",
       "APP_ID_C   object  43576   0.00%   43576         app_36227:0.00%   \n",
       "target      int64  43576   0.00%       2               0.0213191   \n",
       "var_d1     object  43576  37.57%       2   Hit-6+ Vintage:60.32%   \n",
       "var_d2    float64  43576   5.44%     389                 570.492   \n",
       "var_d3     object  43576   5.31%       6  RESIDENT INDIAN:94.00%   \n",
       "var_d4     object  43576   1.08%       5         Graduate:55.30%   \n",
       "var_d5     object  43576   1.08%       3                M:79.70%   \n",
       "var_d6     object  43576   1.08%      13  RESIDENT INDIAN:93.34%   \n",
       "var_d7     object  43576   1.60%      84         SALARIED:31.43%   \n",
       "var_d8     object  43576   1.08%       2                Y:59.90%   \n",
       "\n",
       "                          std_or_top2             min_or_top3  \\\n",
       "APP_ID_C              app_29819:0.00%         app_35476:0.00%   \n",
       "target                       0.144447                       0   \n",
       "var_d1           Hit-lt 6 Vinta:2.10%                    None   \n",
       "var_d2                        355.565                      -1   \n",
       "var_d3      NON-RESIDENT INDIAN:0.64%  PARTNERSHIP FIRM:0.02%   \n",
       "var_d4           Post-Graduate:21.57%           Others:10.71%   \n",
       "var_d5                       F:14.33%                 O:4.89%   \n",
       "var_d6    PRIVATE LTD COMPANIES:2.57%  PARTNERSHIP FIRM:1.45%   \n",
       "var_d7              PROPRIETOR:31.31%    SELF-EMPLOYED:10.74%   \n",
       "var_d8                       N:39.03%                    None   \n",
       "\n",
       "                           1%_or_top4                 10%_or_top5  \\\n",
       "APP_ID_C              app_10104:0.00%             app_35794:0.00%   \n",
       "target                              0                           0   \n",
       "var_d1                           None                        None   \n",
       "var_d2                             -1                          -1   \n",
       "var_d3    PRIVATE LTD COMPANIES:0.02%  PUBLIC LTD COMPANIES:0.00%   \n",
       "var_d4          Under Graduate:10.67%          Professional:0.67%   \n",
       "var_d5                           None                        None   \n",
       "var_d6     PUBLIC LTD COMPANIES:0.73%   NON-RESIDENT INDIAN:0.64%   \n",
       "var_d7                   OTHERS:6.40%      FIRST TIME USERS:2.72%   \n",
       "var_d8                           None                        None   \n",
       "\n",
       "                        50%_or_bottom5                       75%_or_bottom4  \\\n",
       "APP_ID_C               app_25789:0.00%                      app_36858:0.00%   \n",
       "target                               0                                    0   \n",
       "var_d1                            None                                 None   \n",
       "var_d2                             778                                  810   \n",
       "var_d3       NON-RESIDENT INDIAN:0.64%               PARTNERSHIP FIRM:0.02%   \n",
       "var_d4                 Graduate:55.30%                 Post-Graduate:21.57%   \n",
       "var_d5                            None                                 None   \n",
       "var_d6    CO-OPERATIVE SOCIETIES:0.01%  LIMITED LIABILITY PARTNERSHIP:0.00%   \n",
       "var_d7                     NURSE:0.00%                     PHARMACIST:0.00%   \n",
       "var_d8                            None                                 None   \n",
       "\n",
       "                       90%_or_bottom3              99%_or_bottom2  \\\n",
       "APP_ID_C              app_12750:0.00%                app_24:0.00%   \n",
       "target                              0                           1   \n",
       "var_d1                           None       Hit-6+ Vintage:60.32%   \n",
       "var_d2                            832                         864   \n",
       "var_d3    PRIVATE LTD COMPANIES:0.02%  PUBLIC LTD COMPANIES:0.00%   \n",
       "var_d4                  Others:10.71%       Under Graduate:10.67%   \n",
       "var_d5                       M:79.70%                    F:14.33%   \n",
       "var_d6              ASSOCIATION:0.00%             TRUST-NGO:0.00%   \n",
       "var_d7      RETAIL BUS OPERATOR:0.00%        PRIVATE TAILOR:0.00%   \n",
       "var_d8                           None                    Y:59.90%   \n",
       "\n",
       "                           max_or_bottom1  \n",
       "APP_ID_C                  app_13004:0.00%  \n",
       "target                                  1  \n",
       "var_d1               Hit-lt 6 Vinta:2.10%  \n",
       "var_d2                                900  \n",
       "var_d3    OVERSEAS CITIZEN OF INDIA:0.00%  \n",
       "var_d4                 Professional:0.67%  \n",
       "var_d5                            O:4.89%  \n",
       "var_d6    OVERSEAS CITIZEN OF INDIA:0.00%  \n",
       "var_d7                  TAXI DRIVER:0.00%  \n",
       "var_d8                           N:39.03%  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "toad.detect(train)[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 2. toad.quality(dataframe, target='target', iv_only=False):\n",
    "\n",
    "Output IV (information value), gini, entropy and no. of unique values for each feature. The features are sorted by IV in a descending order. \"target\" is the target variable, and 'iv_only' specifies whether to calculate IV only. \n",
    "\n",
    "\n",
    "<font color='red'>Note: it is recommended to set \"iv_only=True\" for large dataset or high-dimensional data.  </font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>iv</th>\n",
       "      <th>gini</th>\n",
       "      <th>entropy</th>\n",
       "      <th>unique</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>var_b19</th>\n",
       "      <td>0.353043</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>88.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b18</th>\n",
       "      <td>0.317603</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>46.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d2</th>\n",
       "      <td>0.313443</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>411.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_d7</th>\n",
       "      <td>0.309985</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>95.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b10</th>\n",
       "      <td>0.301111</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>15726.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b17</th>\n",
       "      <td>0.240104</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>235.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b16</th>\n",
       "      <td>0.231403</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>104.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b24</th>\n",
       "      <td>0.226939</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>30928.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b20</th>\n",
       "      <td>0.198655</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b11</th>\n",
       "      <td>0.187306</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>239.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_l_19</th>\n",
       "      <td>0.160020</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>32240.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_b9</th>\n",
       "      <td>0.157585</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>197.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_l_68</th>\n",
       "      <td>0.150068</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>757.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_l_123</th>\n",
       "      <td>0.146634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10602.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>var_l_125</th>\n",
       "      <td>0.146274</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6338.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 iv  gini  entropy   unique\n",
       "var_b19    0.353043   NaN      NaN     88.0\n",
       "var_b18    0.317603   NaN      NaN     46.0\n",
       "var_d2     0.313443   NaN      NaN    411.0\n",
       "var_d7     0.309985   NaN      NaN     95.0\n",
       "var_b10    0.301111   NaN      NaN  15726.0\n",
       "var_b17    0.240104   NaN      NaN    235.0\n",
       "var_b16    0.231403   NaN      NaN    104.0\n",
       "var_b24    0.226939   NaN      NaN  30928.0\n",
       "var_b20    0.198655   NaN      NaN     34.0\n",
       "var_b11    0.187306   NaN      NaN    239.0\n",
       "var_l_19   0.160020   NaN      NaN  32240.0\n",
       "var_b9     0.157585   NaN      NaN    197.0\n",
       "var_l_68   0.150068   NaN      NaN    757.0\n",
       "var_l_123  0.146634   NaN      NaN  10602.0\n",
       "var_l_125  0.146274   NaN      NaN   6338.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "toad.quality(data,'target',iv_only=True)[:15]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-----------------------\n",
    "### <font color='blue'>### II. how to use toad to fine tune feature binning and conduct feature selection</font>\n",
    "\n",
    "#### 3. toad.selection.select(dataframe, target='target', empty=0.9, iv=0.02, corr=0.7, return_drop=False, exclude=None):\n",
    "\n",
    "Conduct preliminary feature selection according to missing percentage, IV and correlation (with other features), the variables are:\n",
    "\n",
    "(1) empyt=0.9: the features with missing percentage larger than 90% are filtered;\n",
    "\n",
    "(2) iv=0.02: the features with IV smaller than 0.02 are eliminated;\n",
    "\n",
    "(3) corr=0.7: if two or more features have Pearson correlation larger than 0.7, the ones with lower IV are eliminated;\n",
    "\n",
    "(4) return_drop=False: if set True, the function returns a list of deleted columns;\n",
    "\n",
    "(5) exclude=None: input the list of features to be excluded from the algorithm, typically ID column and month column. \n",
    "\n",
    "As shown in the cell below, none feautures are deleted due to high missing values, most values are deleted by the IV threshold, several are deleted for the correlation. In the end, 32 features are chosen from initially 165. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'empty': array([], dtype=float64), 'iv': array(['var_d1', 'var_d4', 'var_d8', 'var_d9', 'var_b5', 'var_b6',\n",
      "       'var_b7', 'var_l_1', 'var_l_2', 'var_l_3', 'var_l_4', 'var_l_5',\n",
      "       'var_l_6', 'var_l_7', 'var_l_8', 'var_l_10', 'var_l_12',\n",
      "       'var_l_14', 'var_l_15', 'var_l_16', 'var_l_17', 'var_l_18',\n",
      "       'var_l_21', 'var_l_23', 'var_l_24', 'var_l_25', 'var_l_26',\n",
      "       'var_l_27', 'var_l_28', 'var_l_29', 'var_l_30', 'var_l_31',\n",
      "       'var_l_32', 'var_l_33', 'var_l_34', 'var_l_35', 'var_l_37',\n",
      "       'var_l_38', 'var_l_39', 'var_l_40', 'var_l_41', 'var_l_42',\n",
      "       'var_l_43', 'var_l_44', 'var_l_45', 'var_l_47', 'var_l_49',\n",
      "       'var_l_51', 'var_l_53', 'var_l_55', 'var_l_56', 'var_l_57',\n",
      "       'var_l_59', 'var_l_61', 'var_l_62', 'var_l_63', 'var_l_65',\n",
      "       'var_l_67', 'var_l_70', 'var_l_72', 'var_l_75', 'var_l_76',\n",
      "       'var_l_77', 'var_l_78', 'var_l_79', 'var_l_80', 'var_l_81',\n",
      "       'var_l_82', 'var_l_83', 'var_l_84', 'var_l_85', 'var_l_86',\n",
      "       'var_l_87', 'var_l_88', 'var_l_90', 'var_l_92', 'var_l_93',\n",
      "       'var_l_94', 'var_l_95', 'var_l_96', 'var_l_97', 'var_l_98',\n",
      "       'var_l_100', 'var_l_102', 'var_l_104', 'var_l_106', 'var_l_108',\n",
      "       'var_l_109', 'var_l_110', 'var_l_112', 'var_l_114', 'var_l_116',\n",
      "       'var_l_117', 'var_l_118', 'var_l_120', 'var_l_122', 'var_l_124',\n",
      "       'var_l_126'], dtype=object), 'corr': array(['var_b27', 'var_b28', 'var_b4', 'var_l_105', 'var_b25', 'var_b2',\n",
      "       'var_l_113', 'var_l_46', 'var_b26', 'var_b8', 'var_b1',\n",
      "       'var_l_103', 'var_l_99', 'var_l_74', 'var_b14', 'var_l_13',\n",
      "       'var_l_22', 'var_b22', 'var_l_101', 'var_l_111', 'var_b12',\n",
      "       'var_l_69', 'var_b11', 'var_l_115', 'var_l_11', 'var_l_36',\n",
      "       'var_l_50', 'var_l_54', 'var_l_121', 'var_b15', 'var_l_73',\n",
      "       'var_l_66', 'var_l_125', 'var_b16', 'var_b24'], dtype=object)}\n",
      "(43576, 34)\n"
     ]
    }
   ],
   "source": [
    "train_selected, dropped = toad.selection.select(train,target = 'target', empty = 0.5, iv = 0.05, corr = 0.7, return_drop=True, exclude=['APP_ID_C','month'])\n",
    "print(dropped)\n",
    "print(train_selected.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4. Fine binning\n",
    "\n",
    "Toad's binning function support both categorical and numerical features. The class \"toad.transform.Combiner()\" is used to train, the procedure is below:\n",
    "\n",
    "(1)  *** initalise: ***c = toad.transform.Combiner()\n",
    "\n",
    "(2) ***train binning***: c.fit(dataframe, y = 'target', method = 'chi', min_samples = None, n_bins = None, empty_separate = False) \n",
    "\n",
    "    - y: target variable;\n",
    "\n",
    "    - method: the method to apply binning. Suport 'chi' (Chi-squared), 'dt', (decisin tree), 'kmeans' (K-means), 'quantile' (by the same percentile), and 'step' (by the same step);\n",
    "\n",
    "    - min_samples: can be a number or a porportion. Minimum number / porportion of samples required in each bucket;\n",
    "    \n",
    "    - n_bins: mininum number of buckets. If the number is too large, the algorithm will return the maxinum number of buckets it can get;\n",
    "\n",
    "    - empty_separate: whether to seperate the missing values in a bucket. If False, missing values will be put along with the bucket of most close bad rate. \n",
    "\n",
    "\n",
    "(3) ***binning results***：c.export()\n",
    "\n",
    "(4) ***adjust  bins***: c.set_rules(dict)\n",
    "\n",
    "(5) ***apply bins and convert to discrete values***: c.transform(dataframe, labels=False):\n",
    "\n",
    "    - labels: whether to convert data to explanatory labels. Returns 0, 1, 2 ... when False. Categorical features will be sorted in a descending order of  porportion. Returns (-inf, 0], (0,10], (10, inf) when True.\n",
    "    \n",
    "<font color='red'>Note: 1. remember to exclude the unwanted columns, especially ID column and timestamp column. 2. Columns with large number of unique values may take much time to train.</font>  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "var_d2: [747.0, 782.0, 820.0]\n",
      "var_d5: [['O', 'nan', 'F'], ['M']]\n",
      "var_d6: [['PUBLIC LTD COMPANIES', 'NON-RESIDENT INDIAN', 'PRIVATE LTD COMPANIES', 'PARTNERSHIP FIRM', 'nan'], ['RESIDENT INDIAN', 'TRUST', 'TRUST-CLUBS/ASSN/SOC/SEC-25 CO.', 'HINDU UNDIVIDED FAMILY', 'CO-OPERATIVE SOCIETIES', 'LIMITED LIABILITY PARTNERSHIP', 'ASSOCIATION', 'OVERSEAS CITIZEN OF INDIA', 'TRUST-NGO']]\n"
     ]
    }
   ],
   "source": [
    "# initialise\n",
    "c = toad.transform.Combiner()\n",
    "\n",
    "to_drop=['APP_ID_C','month']\n",
    "# Train binning with the selected features from previous; use reliable Chi-squared binning, and control that each bucket has at least 5% sample.\n",
    "c.fit(train_selected, y = 'target', method = 'chi', min_samples = 0.05, exclude = to_drop) #empty_separate = False\n",
    "\n",
    "# For the demonstration purpose, only showcase 3 bin results.\n",
    "print('var_d2:',c.export()['var_d2'])\n",
    "print('var_d5:',c.export()['var_d5'])\n",
    "print('var_d6:',c.export()['var_d6'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 5. Fine tune bins\n",
    "\n",
    "The \"toad.plot\" provides functions for visualisation to help make adjustment.\n",
    "\n",
    "(1) ***In-sample visualisation  ***： toad.plot.bin_plot(dataframe, x = None, target = 'target)\n",
    "\n",
    "The bars are the proportion of each binned class, and the line is the corresponding postive sample proportion (e.g. bad rate).\n",
    "\n",
    "    - x: the feature column of interest\n",
    "    \n",
    "    - target: target variable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n",
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x13b033128>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwIAAAF3CAYAAAAWzPzjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3gVZf7+8fcp6Y0EEnoJoA8gHRSQLoo0UVQsiL2AHXX9rrrrz3XXdYttXWtWQVFUXF27ojSp0qUKPIqAAookIaSTcs75/XFCDIgmIieTcr+ui8ucmWfm3MO1G+Yz8xRXIBBARERERETqF7fTAUREREREpPqpEBARERERqYdUCIiIiIiI1EMqBERERERE6iGv0wGOQRwwEdgKlDicRURERETqpjCgAzADyHU4S0jUxkJgIvC00yFEREREpN54xukAoVAbC4GtADk5hfh8fqeziIiIiEgd5PG4iY+PgrJ7z7qoNhYCJQA+n5/SUhUCIiIiIhJSdbYrem0sBCr117/+icLCAh544J/ceOO1REVF8fDD//5Ju/37Mxk3bhQPPvgw/fsPrPS8O3fu4OGH/8bWrZtJSWnMpEk3MnjwaT/bfuPG9Tz99L/Ztu0rEhMTGTt2HBMmXIbbHRyj/Y9//JX333/7sGPOPXc8t9/+ewCWLl3M1KnPsmvXt6SkNObiiy9lzJizATj//LPYu/f7n3xnz569+fe/nz1s25w5HzNz5itMnfpypdcoIiIiIvVDnSwEKhoxYjSPPPJ3cnJyiI+PP2zfvHlziIuLp0+ffpWep6ioiDvuuJk+ffpx55338NlnS/jTn/7Af/7zIiecYH7Sfu/evdxxxy2MG3c+99xzH998s4MHH/wzYWFhXHjhJQDs3Lmda6+9vvzmHiAqKgqArVs384c/3MkNN9xC//6D2LhxPf/851+Ji4tn8OChPPfcS/j9vvLjtm/fxu9+dysXXDDhsBxr1qzin//8K61atany35mIiIiI1H11fvrQoUNPx+32sHjxgp/smzv3E04//Uy83srroU8/nUtJSQm33/57Wrduw8UXT+TUUwfw5puvH7X9/PlzSE5O5vrrb6Zly1YMGDCYCy+cwMcff1jeZseO7XTo0ImGDRuV/4mOjgHgo4/ep1evU7jgggk0b96CESNGc+aZo8qPT0xMLD8mMTGJZ555glGjzmLAgEHl53/66ce5885badas+a/5KxMRERGReqDOFwKxsbH07z+QTz+de9j277//ji++2MiIEaPLPw8Y0JuPPnr/qOfZuHE9J53U5bCioXv3XmzYsO6o7QcPHsrdd9932DaXy0VRUREAGRnp5OXl0rp1m6Mef8455zF58k1HbP3x+Ipmz57Fnj27ue66Gw7bvm7dWh5//BkGDRp61O8QERERkfqrzhcCAGeeOYrVq1eSk5NTvm3u3E9o06YtHTp0BCAlpTHvvvsxw4adcdRzpKenk5ycfNi2hg0bkZ6+76jtmzdvQefOXco/FxYW8t57b9OtWw8Aduz4GrfbzfTp0zj33NFMnHgBr7/+CoFAAIC2bdtzwgknlh+fkZHBvHmz6dat+0++6+WXX2DcuPEkJiYdtv0//3mRLl26/ezfi4iIiIjUX/WiEOjb91RiY2MP6x40d+4njBgxqvyzx+OhYcNGREREHvUcRUUHCQsLP2xbeHgYJSWVDyQvLS3l/vv/QEFBAVdeeS0AO3bswOVy0bp1ax566HEuumgC06b9h9de++mA3oKCfO6++w4SExMZP/6iw/atWbOKPXt2c955F1SaQ0RERETkkDo/WBjA6/UybNhw5s+fy+jRY9mxYzs7dmxn+PCRVT5HREQEJSXFh20rLi752cLhkKKig9x7792sXbuGxx57kpSUxgCMH38RI0eOIS4uDoB27dqTk5PDG2/MZMKEy8qPz84+wO9+dyv79u3lySefKx9DcMjcubPp3fsUkpNTqnwtIiIiIiL14o0ABLsHrVmzkpycbObM+ZgePXqX35RXRXJyCpmZGYdty8zM+El3oYry8/O4/fab2bBhHY899hSdO3ct3+dyucqLgENSU9uSmZmBzxecDSgjI50bb7yW/fszefLJ52jZstVPvmP58qW/OIWpiIiIiMjR1JtCoFOnzjRr1pylSxezcOH8w7oFVUXnzl3ZtGkjpaWl5dvWrVtz2M19RT6fj7vv/h3ffLODJ55IO2y8AMDjjz/C7bcfPhjY2q20bNkKj8dDQUE+U6bcSElJCU899fxRi4AffthLevo+unfv+auuRURERESk3hQCAMOHj+SNN15j374fGDJk2GH7fD4fmZkZFBUdPOqxQ4YMw+12849/PMCOHduZOXMGy5Yt5fzzf+yzn5mZQUFBAQBvvfUGa9eu4f/+748kJSWRmZlBZmYGWVn7ARg4cDCrV6/k1VdfYs+e3cya9QGvvDKdiROvAGDq1DS++24Pf/zj/YSFecuPz84+UP59X3+9jfDwcFq0aHk8/5pEREREpB6oF2MEDjnzzFFMnZrG8OEjyxfuOmTfvh8YP34s99xzH6NGnfWTY6Oionjoocd5+OG/cfXVE2natBl//vPfDpvZ5+yzR3Dllddy9dWTmD9/DoFAgHvu+d1h50lISODDD+fRs2dv/vSnB5k+/Xmefz6NRo0acf31tzBy5BgA5s+fS3FxEddff/VhxxvTsXyF4P37M4mLi8Plch2Xvx8RERERqT9ch6arrEUGAIuzsvIpLfU7nUVERERE6iCv101iYgzAQGCJw3FCol51DRIRERERkSAVAiIiIiIi9ZAKARERERGRekiFgIiIiIhIPaRCQERERESkHlIhICIiIiJSD6kQEBERERGph1QIiIiIiIjUQyoERERERETqIRUCIiIiIiL1kAoBEREREZF6SIWAiIiIiEg9pEJARERERKQeUiEgIiIiIlIPeZ0OICLi9/t55JG/s23bV4SFhXHXXffSokXL8v3vvfc27777Fh6Ph8svv5r+/QeSmZnBn/98LyUlJTRs2Ig//OFPREZGOngVIiIitYveCIiI4xYvXkBxcTFpaS8wefLNPPnkY+X7MjMzePPNmTzzzFQeffRJ0tKepLi4mBkzpjNixGiefvp52rRJ5d13/+fgFYiIiNQ+eiMgQOVPZA+1ufPOKQwcOIhzzjmfoqKD/PnP95KVlUV0dDR/+MP9JCYmOnQFUptt2LCOPn36AdC5cxe2bt1Svm/Lli/o0qUb4eHhhIeH07x5S77++ituueV2AoEAfr+ffft+oGXL1k7FFxERqZX0RkCAX34ie8hzzz1DTk52+ee3336Ttm3b8/TTzzNixGimT59anZGlDsnPzycmJrb8s9vtprS09Kj7oqOjycvLw+Vy4ff7ueyyC/n88zV07dqt2nOLiIjUZioEBPjlJ7IAn346F5fLRd++p1Y4Zj19+gQ/9+3bn9WrV1ZfYKlTYmJiKCgoKP8cCATwer1H3VdQUEBcXBwAXq+XGTPe4P/+7x4eeOC+6g0tIiJSy6kQEOCXn8hu376NOXM+4ZprJv/kmNjY4DHR0dHk5+dVX2CpU7p06cby5UsB2LRpI23bti/f17HjSWzYsJaioiLy8vL45psdpKa24+GH/87nn68GIDo6BpfL5Uh2ERERAGPMNcaYjcaYz4wxbY7Y19AYM8cYs8kY88eybUnGmFeMMevLtg8o236mMeYHY8zasj+nhyqzxggI8MtPZD/++EPS0/dxyy2T2bv3e7zeMJo0aVZ2TD4QfEp7qCgQ+bUGDRrKqlUrmDz5KgKBAPfccx8zZ86gRYuWDBgwmPPPv4gbb7wWv9/PddfdQEREBOPHX8RDDz3ICy88h9vt5o477nL6MkREpJ4yxiQDdwFdgcHAo8C5FZrcC7wDPAMsNca8B+wAHrXWrjHGjAHuB4YBCcDT1tr7Q51bhYAAwSeyS5cuZtiwM37yRPaGG24t/3nq1DQaNmxI376nsmPHdpYtW0qnTp1Zvnwp3br1cCK61AFut5s777znsG2tW7cp/3ns2HGMHTvuJ/uffPI/1RFPRETqsVmzZjWZMmVKmyM2H7DWHqjweTiwxlpbYIz5BHjRGOOy1gbK9o8Gxlpr/caYN4HR1tq/AWuMMQ2AzsCasrYJQMVzh4y6BgkQfCIbHh7O5MlX8cQTj3LLLbczc+YMlixZ+LPHjBt3Pjt2bOf666/mvffe5sorr63GxCIiIiKh99BDD71B8Ol9xT9TjmjWFLAA1lo/kAUkVdifAnxd9vMeoBmAMSYV2AtcDBwa7JYATDTGbDDGvGSMCVmXC70REKDyJ7KHXH31pPKfIyMjeeCBf4Q6moiIiIhj7rzzzvFTpkxZfcTmoz2xr/iAPQ4IHLHfdeQ+a+0OY0w0cCXwEjAemA58QLBgeJFg0fHAb7iEn6VCQERERETkZ4wcOXLvyJEjd1bS7DugD4AxJg5IJPhW4JAfgPbAF4Apaw+Uv0GYaox5wBjjtdamA+ll55oBnHecLuUn1DVIREREROS3mQ30KHu6PwSYBVxgjLmtbP8HwFBjjJvgYOIPjTHnGmP6ARhjhgH51tpSY8wlxhivMSYcGAUc+TbiuFEhICI1WsDno2jdGnJenkbpnl1OxxEREfkJa20G8CCwArgbuANoDqSWNXkAGAtsAN6x1m4EVgF3G2M2Af8CLitrGwcsAbYS7L3zdKhyuwKBI7sv1XgDgMVZWfmUlvqdziIiIRIoLuLgyuUULpqPP2s/uN3g8RJ3yRVEnNTF6XgiIlLHeb1uEhNjAAYSvDGvc0I6RsAYcw1wK5ALTLDW7jxKm0eBHtbaoaHMIiK1gz8vl8IlCzm4bDGBggK8bdoSM/Y8vC1bkzv9P+ROfw7/6HOIHDRUi4iJiIj8BiErBKqwsALGmA4En/DnhyrH8ZSQGE241+N0DHFIcamP7KyCyhvKMfGl76Nw0XwOrl4BPh/hnboQNWQYYW3alrdJmHwruTNfJv+Dt/Fl7CPmnPG4PPr/pIiIyLEI5RuByhZWAHgE+Dtw89FOULbAQoOK29LS0poMGTIkRJF/WbjXw2OLtjjy3eK82wZ1dDpCnVSycweFC+dS/MVG8HiI7NWHyEFD8aY0/klbV3g4cROvpODjDyj8dA6+zEziLr0Sd1S0A8lFRERqt1AWAoctrGCMObSwQiZA2VLKu/hxFbWjmcKPiysAkJaWxpAhQw712RKpVsnJcU5HqBMCfj9569eTOWsWhV9+iTsmhoZjxpB0+ul4ExIqP8Hll3AgtSXfT59O3rOP0/K22whPTg59cBERkTok1OsIHHVhhbLpkP4AjAF+abW0fxFcSKHcpEmTegNvODFYWDeBkp6e63SEWi1QWkLR56spXDgP374fcCcmEXP2eUSe3A9XRARZxUBV/4479iD+mhhyX3qe7X+6n/grriOsTWrlx4mIiFRBhcHCdVYoC4FfWlhhANCQ4JyqEUA7Y8xj1trbKp7AWnuAn67c1iKEmUUkBPwFBRxcvoTCJQsJ5Obgad6CuAmXE961x2/q4x/e/kQSbrqDnGnPkp32b+IunEhE917HMbmIiEjdFcpCYDbw56MsrNDMWvsYcCKAMaY18OKRRYCI1H6+rP0ULl5A0crPCBQVEXZiR6Iuvoyw9icetxl/vCmNaXDzHeRMf57cV17El55O1OlnakYhERGRSoSsELDWZhhjDi2skAtMIDhrUJtQfaeI1Ayl3+2mcME8itZ/DkBE915EDT4Nb7PQvNBzx8SScN2N5L3xGgWzP8SXsY/Y8Rfj8oaF5PtERETqgpCOEbDWTgOmVdj06FHafANoDQGRWi4QCFDylaVw4TxKvtyKKyKCyAGDiRo4FE+DxJB/v8sbRuxFl+JplBIsBrL2E3/5NbhjfmkYkoiISP0V6sHCIlLHBXw+ijaspXDBPHzf7cYVF0/0yLOI7Deg2qf1dLlcRJ8xAk9yMrmvz+DAE48Qf9Xko05FKiIiUt+pEBCRYxIoKuLgymUULv4Uf9Z+PCmNiR0/gYievR3vkhPRvRfuBknkvPgfsp98hLjLriG8/YmOZhIREalpVAiIyK/iz8mhcOlCDi5bQqCwAG9qO2LOOZ/wDifhcrsrP0E1CWuTSoNb7iBnaho5zz1F7PkXE3lyX6djiYiI1BgqBESkSkr3/UDhovkUrVkJPh/hJ3UlasgwwlrX3Ln7PUmNSLjpNnJffoG8/76CL30f0SPG1KiCRURExCkqBETkF5Xs2E7hwrkUb94EHg+RvfsSNWgonuQUp6NViTsqmvirJ5P/zhsUfjoHX0Y6cRddiis83OloIiIijlIhICI/EfD7Kd68kcIF8yj9Zgeu6Giihp1JVP9BuGNr3wrbLo+HmHMvxNMohfwP3yH72f3EX3Ed7vgEp6OJiIg4RoWAiJQLlJRQtGYlhYvm40vfhzsxiZhzzify5L64wiOcjvebuFwuogafhrthI3Jfnf7jjEJNmzkdTURExBEqBEQEf0E+B5ctoXDJQgJ5uXhbtCTukisI79Idl8fjdLzjKqJzVzw3TCHnhTSyn3qMuIlXEN7hJKdjiYiIVDsVAiL1mC9rP4WLPuXgys+guJgw05GoIacT1u4EXC6X0/FCxtuiJQm3/I6cF9LImZZGzNnnEdV/sNOxREREqpUKAZF6qHTPLgoXzKNow1oAInr0JmrwsHrVTcaT0IAG108h99Xp5L/zJr70dGLOGlfn3oCIiIj8HBUCIvVEIBCg5MutFC6cR8lXFldEJFEDhhA5cAieBolOx3OEKyKCuMuvIf/Ddzi46FN8menEXXIl7shIp6OJiIiEnAoBkTou4PNRtO5zChfOw/f9HtzxCUSPOpvIvv1xR0U5Hc9xLreb2LPODc4o9M4bZD/9GPFXTsKTmOR0NBERkZBSISBSR/kPHqRo5WcULl6A/0AWnsZNiL3gEiJ69MLlDXM6Xo0T1W8AnqSG5M6YFpxR6MrrCGvZ2ulYIiIiIaNCQKSO8edkU7hkIQeXLyFQWIi3bXtiz72AMNNJK+pWItx0JOHG28mZ9izZzzxO3MWXEdGlu9OxREREQkKFgEgdUbpvL4UL51O0ZhX4fYR36UbU4GGEtWrjdLRaxdukKQ1uvoOcF58j96Wp+EadTdSQYXV6FiUREamfVAiI1GKBQIDSndspXDCX4s2bICyMyFP6ETVoKJ5GyU7Hq7XccfEkTL6Z3NdfoeCjd/Fl7CN23AW4vPqVKSIidYf+VROphQJ+P8VfbKBwwTxKv92JKzqGqDNGEnXqQNyxcU7HqxNcYeHETbicgkbJFM77BH9mBnGXXYM7OtrpaCIiIseFCgGRWiRQUszB1SspXDQff0Y67qRGxIwbT2TvvrjCw52OV+e43G5iRozB0yiZvDdfI/vJR4i/arLetoiISJ2gQkCkFvDn53Pws8UULl1IID8Pb8tWxEy8ivAu3TQAuBpE9u6DJ6khOdOfC84odMW1hKW2czqWiIjIb6JCQKQG8+3PoHDRpxxcuRxKignr0InoIafjbdteg1erWVjb9jS46Q5yXkgjO+1JYsdPILLXyU7HEhEROWYqBERqoNLd31KwYB7FG9aC201Ej95EDR6Gt0lTp6PVa57kFBJuup3cl6aSN/MlfBn7iB4+SkWZiIjUSioERGqIQCBAid1C4cJ5lGz7EldkJFGDTiNy4BA8CQ2cjidl3NExxF9zA3lvvU7h3I/xZ6QTe8EluMK0SJuIiNQuKgREHBbw+Shat4bCBfPw7f0Od0IDokefQ2SfU3FHRTkdT47C5fUSO34CnkbJFMx6H1/WfuKvuFYzNomISK2iQkDEIf6DhRxc8RkHFy/An30AT5OmxF44kYjuvTRffS3gcrmIPm04nkbJ5L72cnAQ8VWT8DZW9y0RkfrIGHMNcCuQC0yw1u6ssK8hMBNoCsy01j5gjEkCngA6Ax5gsrV2iTEmEngZ6AgsAG6x1vpDkVnTjYhUM192NvkfvUvWX++j4IN38DRKJv7qyTS4/W4ie/dREVDLRHTtQcL1txAoLib7ycco/nKr05FERKSaGWOSgbuAPsBfgEePaHIv8A7QFRhtjOkKlACPWmu7lR17f1nbycBOa21nIBkYE6rcuuMQqSalP3xP4cL5FH2+Cvx+wrt2J2rw6YS1bOV0NPmNwlq1ocEtvyNnWho5U58hdtwFRPbt73QsERE5DmbNmtVkypQpbY7YfMBae6DC5+HAGmttgTHmE+BFY4zLWhso2z8aGGut9Rtj3gRGW2v/BqwxxjQg+FZgTYW2hwqJ/5Z9fu/4X5kKAZGQCgQClO74moIF8yjZsgnCwojs25+ogUPxNGzkdDw5jjyJSSTcOIXcV14k738z8aXvI3r02VrnQUSklnvooYfeOMrm+4E/VfjcFLAAZTf7WUASkFm2PwX4uuznPUB/AGNMKrCl7Ni+R56rrG2z43EdR6NCQCQEAn4/xZvWU7hgHqW7vsEVE0v08FFEnjoQd0ys0/EkRNyRUcRfcR357/2PwkXz8WWmEzfhclzhEU5HExGRY3TnnXeOnzJlyuojNh84StOKT37igMAR+11H7rPW7jDGRANXAi8B448419HOc9yoEBA5jgIlxRxctYLCRfPxZ2bgbtiImHMvJLL3KbjCwp2OJ9XA5fEQO+4CPMmNyX/vfxx4+nHir7xOU8CKiNRSI0eO3Dty5MidlTT7juD4AIwxcUAikFVh/w9Ae+ALwJS1B4JvEICpxpgHjDHesn0G2HZk2+NN76xFjgN/fh4Fsz9i/1/vI//t/+KOiSXu0qtJ/L97ieo3QEVAPRQ1YDDxV16HP2Mf2U88QumeXU5HEhGR0JkN9Ch7uj8EmAVcYIy5rWz/B8BQY4wbGAx8aIw51xjTD8AYMwzIt9aWHmpbdtxQ4MNQhdYbAZHfwJeZQeGi+RxctRxKSgjv1Dm4AnBqO602K4R37EzCDVPImZbGgaf/RdwlVxDRqYvTsURE5Diz1mYYYx4EVlA2fShwLtCmrMkDBKcPnQy8Zq3daIw5ADxljGlLsPvPZWVt04CXjDGbCE4f+kGocrsCgZB1OwqVAcDirKx8SktDMqXqz0pOjuOxRVuq9Tul5rhtUEfS03MBKNn1DYUL5lG8cR24PUT07E3U4NM0h7wclT8nm5wX0ijds5uYs8YROWCICkURkRrO63WTmBgDMBBY4nCckNAbAZEqCgQCFG/5gsKF8yj5+itckVFEDTmdqAGDcccnOB1PajB3fAIJ199K7msvkf/eW/jS9xFz9vm4PB6no4mISD2mQkCkEi6fj2bbN7PjkxkU7dmDO6EBMWPGEdHnVNyRkU7Hk1rCFR5B3KVXUzDrfQoXzMWXmUHcxKtwR0U5HU1EROopFQIiP8NbXEQLu442X6wmsiAPWrQg9qJLiejeS09y5Zi43G5iRp+NJzmFvP/NJPupx4i/ahKepIZORxMRkXpIhYDIESLyc2m9eTWttq7DW1JMZtPWbBowkokXjyIjI8/peFIHRJ7SD3dSErkvTeXAE48Qf8W1hLVOdTqWiIjUMyoERMrEZqWTunElTbdvxhUIsLdNB3Z0OYWcRk0ANLhTjqvw9oaEm24nZ2oa2c/+m7gLJxLRvZfTsUREpB5RISD1WyBA0t5dtNm4gpTd2yn1hrGrQw92ntSbwjgtACWh5U1pQoNb7iDnxefIfeVFfJkZRJ02XEWniIhUCxUCUi+5/H4a77SkblpJQsZeiiKj+bLnQHZ16EFJpAZvSvVxx8SSMOkm8v77KgUff4AvfR+x51+EyxvmdDQREanjVAhIveIuLaHFlxtp88UqonMPkB+fyKZTz+S79ifh142XOMTlDSP24svwJKdQMPsjfFn7ib/sGtwxMU5HExGROkyFgNQLYYUFtN6yhlZb1hJeVEhWSjO2njyUfa3ag9vtdDwRXC4X0WeMxN0ombzXX+HAk4+QcNVkPMkpTkcTEZE6SoWA1GnROVm02bSK5l9txOMr5YdW7dnRpQ8HGrdwOprIUUX26I2nQRI505/jwBOPEHf5NYS3O8HpWCIiUgepEJA6KWHfd6RuWkHjnV8ScHvY0/4kdnY+hfwGmq9dar6w1LY0uPkOcqalkfPcU8SedxGRJ/d1OpaIiNQxKgSk7ggESN71NambVpK0dxcl4RFs79qXbzv1oig61ul0Ir+Kp2EjEm66jdyXppL331fwZaQTfeZoXOrKJiIix4kKAan1XL5Smn29mdRNK4k9kElhTDxb+pzG7hO74guLcDqeyDFzR0UTf80N5L39Xwrnz8aXsY+4iy7FFRbudDQREakDVAhIreUtOkhLu47WX6whsjCPnKQU1g8ew97UDgTcHqfjiRwXLo+H2PMuCs4o9OG7ZGdlEX/Fdbjj452OJiIitZwKAal1IvNyaP3Falp+uR5vSTEZzdqwcdAoMpu1AS3EJHWQy+UievAwPA0bkfvqSxx44mHir56Mt0kzp6OJiEgtpkJAao3Y/ftI3biSptu3AAH2pnZkR5dTyG3Y2OloItUionM3PDfcSs4LaWQ/+RhxE68kvEMnp2OJiEgtpUJAarZAgKTvvyV14wqS9+yg1BvGtx17sLPzyRyMTXA6nUi187ZoRcLNvwvOKDTtWWLOOZ+oUwc5HUtERGohFQJSI7n8fhrvtKRuXEFC5g8URcXwZa9B7OrQnZKIKKfjiTjK0yCRBjfeRs4rL5L/9hv40tOJOWucZhQSEZFfRYWAABDw+1n8ShqZu3fi9noZcvlNJKQ0Ld+/edFstiz6BJfbQ6/R42nd7WQKsrOY9/yj+EpLiU5IZOiVtxIW8dtm6fGUFNP8q4202bSK6Lxs8uOT2NT/TL5r1xm/V/9zFTnEFRFB/BXXkv/B2xxcvABfZjpxE67AHRnpdDQREakldGclAOxYt4LSkmLG3f0Pfvjasuy/LzDipnsAKMjOYtP8DzjvD49QWlLMu/+8mxadurN21v84sd9pmFOHsuq919i86BO6nTH2mL4/vDCfVls+p9WWzwkvOkhWSnO29hnGvlbtNQBY5Ge43G5ix56Hp1EK+e++SfbT/yL+qkl4GiQ6HU1ERGoBFQICwN6vttCqc08AGrcz7PtmW/m+fTu+ojhRvP8AACAASURBVEm7jnjCwvCEhRGf3JTM3Ts59cKrIRAg4PeTvz+DBh1//Qwm0dn7abNpFc23bcLtK2VfqxPY0eUUDjRucdyuTaSuizp1IJ6khuTOeIHsJx4m/spJeFu0cjqWiIjUcCoEBIDigwWER0WXf3a73fh9Ptwez0/2hUdGUVxYgMvlwufz8eafp1BaUkKvsy6s8vcl7NtD6saVNP7mS/weD9+178zOzieTn9DwuF6XSH0R3qETCTfdRs60NA48/S/iLr6ciC7dnI4lIiI1mAoBASA8Mprig4XlnwP+AG6P58d9RT/uKz5YSHh0DAAer5cL//wkuzevZ/60xzn7zr/+/JcEAiTv2kbqxpUk/bCb4vBItnfrxzedelEcFROaCxOpR7xNmtHg5jvIefE5cl+eim/UWKIGD8Ol7nUiInIUKgQEgCbtO7Bz/SranzyAH762JLVoXb4vJfUEVr4zg9KSYnwlJRzYu5uk5q1Y9MqztOvVn+YduhAWGfWzNxsuXynNvv6C1I0ric3eT2FsPFv6DGP3iV3xhYVX1yWK1AvuuHgSJt9M7swZFHz4Lr70fcSeeyEuj1bbFhGRw6kQEABSe/Rl9+b1vP3330MAhlxxM+tnv0tCSlPadD+FzqeN4d1/3EMg4OeUcy7BGxZOl9PGsGjGM6z54HVcLhcDL5l02Dm9RQdptXUtrTavIbIwn+yGjVk/+Cz2pnYgoGkORULGFRZO3CVXUJCcQuG8T/DvzyTu0qtxR0dXfrCIiNQbrkAg4HSGX2sAsDgrK5/SUn+1fnFychyPLdpSrd9ZG0Xm5dDmi1W0sBvwlhaT3jyVHV1OYX/T1rV6BqDbBnUkPT3X6Rgiv8rB1SvIe/M1PA0bEX/lJDyNkp2OJCJSK3i9bhITYwAGAkscjhMSeiMgx01c5j5SN62gyfYtgIvv23ZkZ+dTyG2Y4nQ0kXorsncfPIlJ5Lz0PAeefJT4y68lLLWt07FERKQGUCEgv00gQMPvviF10woa7dlJqTecbzr15puTenMwNt7pdCIChLU7gQY33UH2tGfJTnuC2AsvIbJHb6djiYiIw1QIyDFx+f002bGV1I0riN+/j4NRMdheg9nVoTulEVrZVKSm8SSnBGcUmv48ea9Ox5++j6gzRmpGIRGReiykhYAx5hrgViAXmGCt3Vlh303A5UAj4GVr7f8LZRY5PjwlxbT4cgNtvlhFVF4OeQlJbBwwku/adSLgUV0pUpO5o2NIuPZG8t58jYI5s/BlpBM7fgKusDCno4mIiANCdudmjEkG7gK6AoOBR4FzKzTZAPQBwoCvjTHPWWt3hSqP/DYuXynt131Gyy1rCS8+yP7GLdjc9wzSW7ar1QOAReobl9dL7IUT8aQ0pmDW+/j2ZxJ/xbW4Y+OcjiYiItUslI9whwNrrLUFxphPgBeNMS5rbQDAWrvIGOMBugMHgO+OPIExpgHQoOK2tLS0JkOGDAlhbDmapL27aLt+GT+0PpEdXU4hO6W505FE5Bi5XC6iTxuOp2EyuTNf5sATjxB/1WS8jZs4HU1ERKpRKAuBpoAFsNb6jTFZQBKQWaHNR8Aw4DRrre8o55gC3FdxQ1paGkOGDDk0nZNUk8xmbZhz2R34vfW7+09ysp6aSh1y+iAKU5uz6/HHyXnqUVrcfDMxnTo5nUpEpFaqpEt8Q2AmwfvjmdbaB4wxXuBhgtOTuoFrrbWrjTEGWA4cOv4xa+1Locgc6ru6iqtGxQGHLVpgrT3TGHMi8JYx5jRr7b4jjv8X8GLFDZMmTeoNvOHUOgL1lstV74sAQOsISN0Tn0L8jbeTMy2Nbx9+mNhzLyCyT3+nU4mIOK7COgKVqkKX+HuBd4BngKXGmPeAfGC1tXaKMWY08DjQH0gA3rHWXnm8ruXnhPLO7juCYwAwxsQBiUDWkY2stV8aY+YQ7Eo044h9Bwh2G6qoRUjSiojUU56khiTceBu5M14g782Z+NLTiR41FpdWABcRqapf7BIPjAbGlvWSeRMYba39G/B12f4lQKuynxP46f1vSISyEJgN/NkYEw0MAWYBFxhjmgHTgWuAR4Bogn95b4Uwi4iI/AJ3VBTxV00i/93/UbhwHr6MdOImXIYrPMLpaCHn9/t55JG/s23bV4SFhXHXXffSokXL8v2vv/4Kc+fOBqBfv/5cddV15OXlcd9993DwYCFebxj/7//9mYYNGzl1CSISQrNmzWoyZcqUNkdsPlD2wPqQyrrEp/DjTf8egk/+K+oDfF72cwJwujFmLfANMNlau/d4XMuRQva4x1qbATwIrADuBu4AmgOpBKucGGAVsBH4r7V2caiyiIhI5VweDzHjxhMz9jyKN28k+5nH8WVnOx0r5BYvXkBxcTFpaS8wefLNPPnkY+X79uzZzezZH/Pss9NIS3uBVauWs23bV3z00fu0a9eOp556jmHDzuDVV1928ApEJJQeeuihN4AdR/yZcpSmv9glHnAdbV/ZWIE/ERwvAPAxcBnQD9gFPPCbLuAXhLTTt7V2GjCtwqZHK/x8H0cMBBYREWe5XC6iBg7B3bAhua+8SPYTDxN/1SS8zepur8wNG9bRp08/ADp37sLWrVvK9zVu3IRHHnkCj8cDQGlpKeHh4bRr155vv90JQH5+Pl6NoRKps+68887xU6ZMWX3E5iO77lTWJf4HoD3wBWA4fLbM54FZhx6KW2vzgLVl55oGPHF8ruSn9JtLRER+IqJTFzw33EbOC2kceOox4i+5kvBOnZ2OFRL5+fnExMSWf3a73ZSWluL1evF6vTRo0IBAIMBTTz3OCScYWrVqTVFREStXLmfixPHk5OTw1FPPOXgFIhJKI0eO3Dty5MidlTT72S7x1trHgA+AocaYLQQHE18FYIz5OxBurf3LoRMZYy4oa38QGAscWYQcNxoJJiIiR+Vt3oKEm3+HN6UxOS/+h8LFCwgEjnzTXfvFxMRQUFBQ/jkQCBz2hL+oqIj77/8jBQX53HHHXQC88MJzTJhwGTNmvMGjjz7JH//4f9WeW0Rqjkq6xEOwe89YggvqvmOt3WiMGQn8HjjRGLO27M9AoASYA3wJ9CDYbSgk9EZARER+lichgYTrbyX31ZfIf+9/+NL3EXP2ebjKusrUBV26dGPp0sUMG3YGmzZtpG3b9uX7AoEAd999Bz179mbixCvKt8fFxREbG3yLkJiYSH5+fnXHFpEa5pe6xFtr9xOcHKdi+1n8OG7gSG8f94BHoUJARER+kSs8grjLrqbgo/eCMwrtzyBu4pW4I6OcjnZcDBo0lFWrVjB58lUEAgHuuec+Zs6cQYsWLfH5/Kxb9znFxcUsX/4ZAJMn38S1117P3//+F95++01KS0v5/e//4PBViIj8eq5a+Jp3ALDYqQXFHlu0pfKGUifdNqijFhSTeu/giqXkvfVfPCmNib9qMp7EJKcjiYiERIUFxQYSnOe/ztEYARERqbLIPv2Jv+YG/AcOcODfD1NSNnOOiIjUPioERETkVwk/wZBw0+24wsPJfubfFK1f63QkERE5BioERETkV/M2bkKDm+/A27wFuTOmUTB/dp2cUUhEpC5TISAiIsfEHRtHwqSbiejRm4JZ75P3+gwCpaVOxxIRkSrSrEEiInLMXGFhxF58GZ5GyRTMmYUvaz/xl1+DOzrG6WgiIlIJFQIiIlIlCYnRhHt/Zv2ASy4kO7Ul30+bRt7Tj9HyttsIb9KkegNKSBWX+sjOKqi8oYjUGioERESkSsK9nkqmUE6kwfAL6Tn/Lbbc9yfWnjaOrKatqi2fhNZtgzo6HUFEjjONERARkePmQJMWLBtzKcWR0Zz8yes0+2qj05FERORnqBAQEZHjqjA+keVjLiWrcUu6Lv6IE9YsAs0oJCJS46gQEBGR4640IpLVZ45n14ldabd+Gd0WvIe7tMTpWCIiUoHGCIiISEgE3B6+6D+C/IQkzKoFROVl8/np51EcpRmFRERqAr0REBGR0HG52NmlD2tPG0fc/nT6vf8SsVnpTqcSERFUCIiISDXY1+ZEVoyegMvnp88HM2i0e7vTkURE6j0VAiIiUi1yGjVl+VmXUhibQM85b9Jyy1qnI4mI1GsqBEREpNocjI1nxZhLyGjRlpOWzabDinng9zsdS0SkXlIhICIi1coXFsHnw85lZ6detPliNT3nvYWnpNjpWCIi9Y4KARERqX5uN1v7ns7mvmeQvHs7fT58hYj8HKdTiYjUKyoERETEMd926smaM84nOvcA/d5/mfiMvU5HEhGpN1QIiIiIozJatGX56IkEXG5O+ehVUr750ulIIiL1ggoBERFxXF5SMsvOupS8Bo3oMe9t2mxcCYGA07FERGoNY0yDX3uMCgEREakRiqNjWTnqYva2MXRY9SknffYJLr/P6VgiIjWaCdoMfGGMaW6M2WKM6VCVY1UIiIhIjeH3hrF+6Nl83bUfLe16es1+A2/RQadjiYjUZE8AtwL7rLV7yj7/pyoHqhAQEZGaxeXiq96D2DhwFEl7d9H3wxlE5RxwOpWISE3V0Fo759AHa+3TQHxVDlQhICIiNdKeE7qw+swLCS/Ip98HL9Hgh91ORxIRqYkCxphIIABgjGkCeKpyoAoBERGpsfY3bcXysy6lJDySkz+eSdOvNzsdSUSkpnkG+ARIMcb8DVgOPF2VA1UIiIhIjVaQkMTyMZeSndyMbgvfp93apZpRSESkjLV2KnAv8AoQBlxrrX2mKsd6QxlMRETkeCiJjGLVmRfQeeknnLB2CdE5WWwaMIKAR/+MiUj9Zoz5i7X2XmBRhW2PW2tvrezYKv8GNcY0BAYBPmChtTb7WMKKiIgci4DHy8aBo8iPT+TEzxcTlZfN2mHjKImMdjqaiEi1M8bcDyQCFxpjEirsCgPOJDiT0C+qUtcgY8w4YBtwG/B/wDZjzNBfnVhEROS3cLnY3v1U1g0ZS0LG9/R7/2ViDmQ6nUpExAkrgEzAX/bfQ392A5dU5QRVfSPwV2CQtXYjgDGmJ/A80PNXBhYREfnN9rbtSGFsPD3nvkXfD15m7Wnj2N+stdOxRESqjbX2I+AjY8wsa+3KYzlHVQuBgkNFQNkXf26M0UgtERFxTHZKc5afdRk957xB70/+yxf9h7PnxG5OxxIRqW5ZxpjHgVjARXDq0PbW2v6VHVjVQmCWMeb3wJMExwhcBmwyxiQCLmvt/mPLLSIicuwK4xJYMeZSun/6Dl2WfExMdhZf9h4MLpfT0USknjHGXEOwX34uMMFau7PCvobATKApMNNa+4Axxgs8DAwk2F3/WmvtamOMm+A99yDgC+Bya+0vLbH+KrAaOBV4DTgLWFOVzFWdPvQu4G9lF1YAPAtcSrAfUnoVzyEiInLclYZHsOaM8XzboTttN66g+/x3cJeWOB1LROoRY0wywfvlPsBfgEePaHIv8A7QFRhtjOkKtAZWW2t7AX8EHi9rOxZIttZ2BnYC11Xy9XHW2usJriUwCzgD6FeV3FV6I2CtDatKOxEREScE3G429xtOfkISHVbMp89Hr/L56edRFB3rdDQRqeVmzZrVZMqUKW2O2HzAWnugwufhwBprbYEx5hPgRWOMy1p7qCv9aGCstdZvjHkTGG2t/Rvwddn+JUCrCm3nl/38X+BB4N+/EPHQjAnbgM7W2lVV7cJfpUKg7BXF74CRBKckmg08aK0trcrxIiIiIedy8c1JJ1MQl0i3Be/R9/2X+Pz088ltmOJ0MhGpxR566KE3jrL5fuBPFT43BSxA2c1+FpDEjzfpKfx4078HOLL/fh/g8yPPVda2WSURtxlj/gVMB6YaY2IJ3q9Xqqpdg/4GnEbwlcWjBPsgPVzFY0VERKpNeqv2rBh9Ca5AgD4fvkLyrq8rP0hE5Gfceeed44HUI/786yhNK95XxwFHPpV3HW1f2ViBP3H4vbX7aG1/xvXAYmvtWuA5gvfslXUnAqo+WHgE0NtaW1IW+ENgfRWPFRERqVa5DRuz7KzL6Dn3f/Sc+z+29BnGt516OR1LRGqhkSNH7h05cuTOSpp9R/CpPsaYOIILfWVV2P8D0J7g4F9T1v6Q54FZ1trFFc5lgLlHaXs071trhwFYa58BnqmkfbmqvhFwHyoCyr6kCNBILBERqbGKYuJYOWoC+1q2p9PyuXRcNgeX3+90LBGpm2YDPYwx0cAQgoN2LzDG3Fa2/wNgaFl3+8HAhwDGmL8D4dbav1Q41wfAoYV7hx5q+wsaGGNijiV0Vd8IrDPGPEZwKqMAcBOw4Vi+UEREpLr4wsJZe9o5mNULSN20iujcA6wbMhZfeER5m4Dfz+JX0sjcvRO318uQy28iIaVp+f7Ni2azZdEnuNweeo0eT+tuJ5Obmc6C6U/g9/kAGHzpDTRo0rzar09EagZrbYYx5kGCq/3mAhOAc4E2ZU0eIDh96GTgNWvtRmPMSOD3wBpjzNqydrcA7wPDjTGbCL5BuKeSr88HvjHGbADyKmQaW1nuqhYCNxIcrfwZwf5NnwA3V/FYERER57jd2FNOIz8+iU7LZtP3w1dYc8b5HIyNB2DHuhWUlhQz7u5/8MPXlmX/fYERNwX/3S3IzmLT/A847w+PUFpSzLv/vJsWnbqz6t1X6Tx0FKk9+rJr01pWvPUyZ95wl5NXKSIOs9ZOA6ZV2PRohX37Cc4sVLH9LH4cN3Ckm37FV0/9FW0PU9VC4G5r7RXH+iUiIiJO292hO4VxCXT/9F36vf8Sa04/j5zkpuz9agutOvcEoHE7w75vtpUfs2/HVzRp1xFPWBiesDDik5uSuXsn/cZfSXhUNAB+vw9PmGbZFhFnWGunH+uxVS0ExgB3H+uXiIiI1ASZzVNZPnoivea8SZ+PXmXD4DEUHywov6kHcLvd+H0+3B7PT/aFR0ZRXFhAVFzwbcKBvXtY9saLjLhR/0SKSPUyxvj5+RmFAtbaSu/zq1oIbDfGzCa42EHFvkdHrpomIiJSo+UnNmL5WZfSY95b9Jj/DvMKSik+WFi+P+AP4PZ4AAiPjKa46Md9xQcLCY8Ojsnbs3Uji19J47Srp2h8gIg4IZlg16K/AN8AaYAPuILgqsWVqmohsL/sv73KvuDAL7QVERGp0YqjYlg14mK6LP6IU1cvYeG893D17MfendtIavHjv58pqSew8p0ZlJYU4ysp4cDe3SQ1b8WerRtZOvN5Rk/5f8RpwTIRcYC1NhPAGNPbWnt9hV3/Nsasrso5qloI/AN4GehR9nkpcGlVg4qIiNQ0fq+X9UPOom18Axq8/Qqz77mO/PgkBl91K+tnv0tCSlPadD+FzqeN4d1/3EMg4OeUcy7BGxbOZ69Pxe8rZf60xwFo0KQ5gy+9weErEpF6KsYYY6y1FsAY0wWIqOQYoOqFwAsEVyp7geAriEkERyif8euzioiI1BAuF9t7DeLUhIZMWjKLwtgE1sTEkDj87PImnQYNp9Ogwyb7YPx9R1tUVETEEX8ElpdNH+oGOhGcvrRSVS0Eoq21/6nw+QljzLW/LqOIiEjN9H37kyiMTaDnvLfo+/5LrB12LllNWjodS0SkUtbat4wxS4ABZZsWWWszqnJsVVcW3mqMOfXQB2NMZ2DHr4spIiJScx1o0oJlZ11KcWQ0J388k2bbNjkdSUSkUsaYcKA/EAPEAmcZY/5alWOr+kagNbDQGLMeKCU4VmBv2SsIrLVdf3VqERGRGqYwPpHlYy6lx/y36broQ6JzstjWYwC4fm7NHxERx70OtAWaAmuBPsCCqhxY1ULg98cUS0REpJYpjYhk9fAL6LRsNu3XfUZMdhYbB47C763qP5kiItWqO3AC8AzB1YzdZT9Xqkq/1ay1C485moiISC0T8Hj4ov8ICuKTMKsXEJWXzdph4yiKjnU6mojIkb631pYaY74EOltr3zDGJFTlwKqOERAREalfXC52dO3D2tPOIW7/Pvq/NZVmX22EwM8t5Cki4og8Y8wEYD1wQdn0oVV6aqFCQERE5Bf80Mbw2TlXkN+gIV0Xf0Sv2W8QmZftdCwRkUNuBLoBy4AAsBB4qCoHqhAQERGpRH5CQ1aMvoTNfU8n8YfdDHhrGq02f663AyJSUwwGsoBxwDrgw6ocpEJARESkKlwuvu3Ui6XjruZASjM6LZ/DKR+9SnT2fqeTiUj9lkZwod8oIBp4G3i+KgeqEBAREfkVCuMSWH3mBWwcOIq4rHT6v/MCqRtW4PL7nY4mIvVTorX2OWttSdmfJ4DGVTkwpHOhGWOuAW4FcoEJ1tqdFfaNJTgtaUPgZWttlRY+EBERcZzLxZ4TupDRPJWOy+ZgVi+gyY6tbBw4krykFKfTiUj9ss0Y08dauwLAGNMV+LoqB4asEDDGJAN3AV0J9lt6FDi3QpMOwOkEBzVYY8wb1tovQ5VHRETkeCuKjmXdaefQeKel07I5nPrudLZ368vX3foR8GjdAREJHWPMRoL30XHAkrKFfn0E1xXYXJVzhPK31HBgjbW2wBjzCfCiMcZlrQ0AWGv/eaihMeZzoCVwWCFgjGkANKi4LS0trcmQIUNCGFtERORXcLn4IbUD+5u2psOKebRf9xmNd1o2DRhFdkozp9OJSN110289QSgLgaaABbDW+o0xWUASkFmxkTHGS/CtwcajnGMKcF/FDWlpaQwZMoTExJiQhBb5JcnJcU5HEJEaqiQyio2Dx/B9246c9Nkn9P3gZb45qTdf9hqE3xvmdLzjQr8DRWqO47Hgb6jfW1YcjBxH8PXFkSYD8621+46y71/AixU3TJo0qTfwRlZWPqWl1TswS78AJT091+kIIo7R78CqyWjZjiXjrsasXkibL1aT8u02Ng0Ywf6mrZ2O9pvpd6DUJ16vu84/eA5lIfAd0AfAGBMHJBKc37ScMWY4cDkw9GgnsNYeAA4csbnFcU8qIiJyHPnCI9h86nC+T+1A56Ufc8qsmewy3bAnD6U0PMLpeCIiQGinD50N9DDGRANDgFkElz2+DcAY0xt4GjjPWpsXwhwiIiKOyGraiqXnXMmOzqfQ4ssNDHjreZK/3eZ0LBERIISFgLU2A3gQWAHcDdwBNAdSy5p8RPCNxFvGmLXGmCothSwiIlKb+L1h2FOGsmzMpZRERNJr7v/ouuB9wg4WOB1NROq5kI4RsNZOA6ZV2PRohX2aaFlEROqNnOSmfDb2CtpuWEa79cto9N0ONvc9nb2pHcHlcjqeiNRDWllYRESkmgQ8Hr7uMYDPzr6CgtgGdF/wPj3mvUVEgQbhikj1UyEgIiJSzfISk1k+ZiJbTx5Koz07GfDWVJp/uR4CR5tcT0QkNFQIiIiIOMHtZmeXU1g67ipyk1LosuRjen/8OlG5R06WJyISGlr/XERExEEF8YmsHHkxLe16zKpP6f/2NL7qNYhvOvYEt57X1Qd+v59HHvk727Z9RVhYGHfddS8tWrQ8rE1WVhbXX38V06fPJCIigpdffpEVKz4DIC8vj//f3n3HWVHd/x9/3d1lKcsuvYpSRD50REXERcUSFbBiLF97IZEUYwu/GPM1xRYTEzHfmESNIraEKBFElICKKF1FEFD8RBFQQaT3six7f3/MgJdlK+zd2d37fj4e9+HOnDPnfsY73DufOefMrF+/jvHjJ0URvlRj+oYRERGJWizGl52PZvqFN7C+5eF0mfMmfV97nqyNa6OOTCrBtGlTycvL47HHnmLYsJt45JER+5XPmTOL2277EevXr9+37qqrruWRRx7nkUcep3nz5vziF7+u5KilJlAiICIiUkXsrJ/DB9/5Lh+efA5Zm9aTO24UHebPJFawJ+rQJIkWLJhP3779AOjevQeffLJ4v/K0tBgPP/xXcnJyDtj27benkJ2dvW97kfJQIiAiIlKVxGJ83bEb04cM5Zu2R9Hpg2n0G/8M2eu+iToySZJt27aRlVV/33JaWhr5+fn7lvv0OYEGDRoWue2zz47iuuu+n/QYpWbSHAEREZEqKK9uFh+eej5fd+hC15mT6Tf+aZb26MuSo3MpyNDPd02SlZXF9u3fPmAuHo+TUYbPeOnSz6lfv/4B8wkkGmY2FLgZ2AJc7u7LEsqaAKOBVsBod783XH8tcBcw3t1vDdedBTwDrAw3H+7ubyQjZvUIiIiIVGGr23Zi+pChrOzYnSMXzObEl5+i4TdfRR2WVKAePXoxe/YMABYtWkiHDh3LtN3777/LCSecmMzQpIzMrBlwB9AXuIeEh+iG7gLGAT2BwWbWM1z/DvBsoboNgL+6e+/wlZQkAJQIiIiIVHn5teuw6KRBvHfWJaTvyafvq8/TZfYbpO/Oizo0qQAnn3wqmZmZDBt2PX/+80P85Ce3MXr0c0yf/naJ233xxXJat25TSVGmrokTJ7Y0s3aFXoXHap0JzHX37cAkINfMEh8ZPhiY4u4FwJhwGXf/HFhaqK0GQKXcR1h9iyIiItXEusPaM/3CG+g09x2O+Hguzb/4lEW5Z7PusPZRhyaHIC0tjeHD79xvXdu27Q6oN2bMK/st3377z5IZloQefPDBF4tY/Rvg1wnLrQAHcPcCM9sANAbWheXNgSXh3yuA3BLesgFwqZndAMwHfujuWw96B0qgHgEREZFqZE+tTBafcAZzBl3BnvQM+kx6ge7TXiNj186oQxOpkYYPH34x0L7Q6+EiqiaeV2cDhR8VHiuhLNHTwFUEyUIWcEv5oy4b9QiIiIhUQxtbtmHm+dfRcf4M2i2cQ9OvPufjE89kddtOUYcmUqMMHDhw1cCBA5eVUm0lwfwAzCwbaARsSCj/BugIfAQY304EPoC7rwHWhG09B1x0sLGXRj0CIiIi1VRBRgb/Pe4UZp97NXl1szjmzbH0mjKOzB3bog5NJNVMBnqbWT1gADARuMTMbg3LJwCnmlkacArwanENmdkVZpZhZpnAIOD9ZAWtHgEREZFqbnPTlsw672raL5hDx/kzafL1chb3PYOvdIVi8AAAIABJREFUj+wKsVjpDYjIIXH3tWZ2PzCH8PahwBCgXVjlXoLbhw4D/unuCwHMbB7BXIK6ZjaAoFchG5hOMK/gbeCvyYpbiYCIiEgNEE9L5/OjT+Sbtp3oMX0ivd6ZQKvPP+bjE89iZ/0Dn0grIhXL3UcCIxNWPZRQtp7gzkKFt+ldRFOPhq+kUyIgIpErKCjgj398gM8++5RatWpxxx13HfCAnA0bNvCDH1zP00+Ppnbt2sTjcS68cNC+et2792TYsB9HEb5IlbKtUVNmD76Ctos/4Ki579B/7JN4nwF8aUdX696BBo3qkZmRHnUYEpG8/D1s2rC99IpSLkoERCRy06ZNJS8vj8cee4pFixbyyCMjeOCBb5/FMmfOLB599M+sX79+37oVK76iU6fO/P73I6IIWaRqS0tjebfjWH14R7rN+A/dZk6m1eeLWdR/INtzGkUd3UHJzEhnxDuLow5DInLryV2iDqFG0mRhEYncggXz6du3HwDdu/fgk0/2/7FPS4vx8MN/JSfn2+EN7otZu3Y1N910Iz/96U/44otllRmySLWwI6ch7599KYtyzyZ73Tfkjh1Ju4VzoKAg6tBEpApQj4CIRG7btm1kZdXft5yWlkZ+fj4ZGcFXVJ8+JxywTZMmTbnyyus47bQz+PDD+dx99y954olnKi1mkWojFuMr68WaNh3oOmsynd+bSsulzqKTBrK1UbOooxORCCkREJHIZWVlsX37t2M/4/H4viSgOJ07dyU9PRgv3KvX0axZs5p4PE6sGo+BFkmmXVnZzDt9CC2XLqbr7Dc48eVRLOnVj8979iOerrH3IqlIQ4NEJHI9evRi9uwZACxatJAOHTqWus3IkY/zwgv/AODTT/9LixYtlQSIlCYWY1WHrky7cCir2nXmqHkzOHH8KHLWfB11ZCISAfUIiEjkTj75VN57bw7Dhl1PPB7nzjt/xejRz9GmzeH0739KkdtceeW13HPPXcyaNYP09HR+8YtfV27QItXY7rr1WDDgXL7u0IVuMyfRb8KzLOvWh0+P6U9BRq2owxORSqJEQEQil5aWxvDhd+63rm3bdgfUGzPmlX1/5+Tk8OCDf0p2aCI12pojOjK95eHYu2/RftG7NP/iUxblns2GVkdEHZqIVAINDRIREUlh+Zm1+aj/2bx79mXE4nH6TvwnXWdOJj1vV9ShiUiSKREQERER1rduy4wLrmNZt+M4/JN59B/7JE2/XBJ1WCKSREoEREREBIA9tTL5pO/pzD7nSvJrZXLc62Po8fYEau3cEXVoIpIEmiMgIiIi+9nU/DBmnn8tR344iw4fzqbpiqVsbnQdtOscdWgiUoHUIyAiIiIHiKdn8NkxJzHrvGvYmZXDir/8hc1PP0HB5k1RhyYiFUQ9AiLVRING9cjM0EN/Ulle/h42bdheekWRCrSlSXNmn3sVV21fzuqXXmLDH/5L1rlDqH1cXz27Q6SaUyIgUk1kZqQz4p3FUYchEbr15C5RhyApKp6WRpNBg9jdztjy4vNsfeF5ds3/gPrfvYz0Ro2jDk9EDpKGBomIiEiZpDdrToNhN5N1wcXkL/+cDX+4jx0z3iZeUBB1aCJyEJQIiIiISJnF0tKom3syDW+/k1rtjmTbuDFsevRP5K/+JurQRKSclAiIiIhIuaU3akzO0B9Q/9Ir2bNqFRtHPMD2t14nvmdP1KGJSBlpjoCIiIgclFgsRp3j+pLZqQtbx77A9tfGs+vDeWRfcjkZrdtEHZ6IlEI9AiIiInJI0nJyyLlmKNlX3UDBpo1s/NODbPvPBOL5u6MOTURKoB4BERERqRC1ex5NrY5HsW38S+x4cxJ5Cz+k/iWXU6tt+6hDE5EiqEdAREREKkxavSyyL7uKnBuGEc/bxaa/jGDr+H8Tz9sVdWgiUogSAREREalwmZ270fD2O6lzQn92TpvKhj8+QN5nHnVYIpJAiYCIiIgkRVqdOtQfcgkNfnAzpMXY/NgjbHnxHxTs2BF1aCKCEgERERFJslodOtLotjuoO+AMdr03m41/uI9dHy+MOiyRlKdEQERERJIuViuTrMHn0+CmnxKrl8WWpx5ny/OjKNi6JerQRFKWEgERERGpNLUOP4KGNw+n3pmD2LVwPhv+cD+75r1PPB6POjSRlKNEQERERCpVLCODet8ZSMNbfkZ64yZs+cfTbBn1OHs2bYw6NJGUokRAREREIpHRshUNfnwbWedcSN6nzsY/3MfOOTPUOyBSSZQIiIiISGRiaWnUPeU0Gt32czIOO5ytY0az+fFH2LNubdShidR4SgREREQkculNm5Hz/R9T/6LLyP/yCzb88bfsmPYW8YKCqEMTqbEyog5AREREBILegTon5FKrc1e2/ns028a/xK75H1D/ksuhWXbU4YnUOOoREBERkSolvWEjcq4fRv3/uZo9a9ewccTvWTt+PLGCPVGHJlKjqEdAREREqpxYLEadY/qQ2akzW8e9yJqXXqJf4+Ys6j+QzU1bRh2eyAHMbChwM7AFuNzdlyWUNQFGA62A0e5+b7j+WuAuYLy73xquqwM8C3QBpgI/cfekjJFTj4CIiIhUWWn1s8m58nra3HQTmTu2c8Irz9Dpvamk5e+OOjSRfcysGXAH0Be4B3ioUJW7gHFAT2CwmfUM179DcNKfaBiwzN27A82Ac5IVtxIBERERqfKyjz2W6UNuYGXH7nRYOIfccaNouOqrqMOSFDBx4sSWZtau0KthoWpnAnPdfTswCcg1s1hC+WBgSnhlf0y4jLt/Diwt1NZgYEr49wt76yaDEgERERGpFvJr12HRSYN476xLiBXsoe9rz9Nl1uuk794VdWhSgz344IMvEpysJ75uKVStFeAA4cn+BqBxQnlzYEn49wqgdQlvua+tMtQ9JEoEREREpFpZd1h7Zlx4Pcu7HssRiz+g/0sjabKi8EVVkYoxfPjwi4H2hV4PF1E18bw6Gyj8ZLxYCWXFtVWWugdNk4VFRESk2tlTK5NPTjiDVe070336RPpMeoGvjurOJ8efTn7tOlGHJzXIwIEDVw0cOHBZKdVWEswPwMyygUYEvQJ7fQN0BD4CLKxfUlsGfFaGuodEPQIiIiJSbW1s0YaZ51/Hkp79aP3ZR/R/6QlaLPPSNxSpWJOB3mZWDxgATAQuMbNbw/IJwKlmlgacArxaQlsTgFPDv08tpe4hUSIgIiIi1VpBRgafHncys867hry6WfSeMo6jp4wjc8e2qEOTFOHua4H7gTnAz4HbgcMIhhEB3AucBywAxrn7QgAzmwfcDVxhZvPMLBN4DDjczBYBXxMkBkmhoUEiIiJSI2xp0oJZ511N+4Xv0nHeDBp/vZxP+p7OyiO7QSxWegMih8DdRwIjE1Y9lFC2nuDOQoW36V1Mc5dWbHRFU4+AiIiI1BjxtHQ+79WPGRdcx7YGTej5zqsc+/oY6mzdHHVoIlWOEgERERGpcbY1bMKcQZezuO/pNFr1Jf1fepLDF8+DeNJuwCJS7SgREBERkZopLY3l3Y5jxoXXs7F5K7rNmszxE/9JvU3ro45MpEpIaiJgZkPNbKGZzTSzdoXKjjKz181sXTJjEBERkdS2I7sh7591KQv7DyR7/Wpyxz1Fu4VziBUURB2aSKSSlgiYWTPgDoJ7qt5DwoSJ0OqwXL0SIiIiklyxGCs69WT6kBtYe1h7Or83lb4TnqP++jVRRyYSmWSehJ8JzHX37cAkINfM9k3Zd/dN7j63pAbMrKGZtUt8TZ06tWUSYxYREZEabFe9bOadfiHzB5xH3a2bOHH8KDp+MJ3Ynj1RhyZS6ZJ5+9BWgAO4e4GZbQAaA+UZCnQL8KvEFY899hgDBgygUaOsCgtUpKyaNcuOOgRJcToGJUo15viLxVjVoQvrWrely5w36Th/Bi2WOwv7D2Jzs1ZRRyfFqDHHXxWS7OcIJPY4ZAPlnar/MDAqccWNN954HPDihg3byM+v3LF9OgBlzZotkb23jj8BHYMSrZp2/O2uU48Fp5zL1x260m3Gf+g34VmWdTuOT485iYKMWhX+fnJoKvv4y8hIq/EXnpOZCKwkmB+AmWUDjYAN5WnA3TcCGwutblMh0YmIiIgAaw4/kulDhtLpvam0X/Qezb/4jEW5Z7Oh1RFRhyaSVMmcIzAZ6G1m9YABwETgEjO7NYnvKSIiIlJu+Zm1+Tj3LN4deBnE4/Sd+E+6zpxEet6uqEMTSZqkJQLuvha4H5gD/By4HTgMaA9gZr8xs3lAtpnNM7PvJisWERERkbJY36otMy68nqXd+nC4f0j/sU/S9MslUYclkhRJnSPg7iOBkQmrHkoo+xWFJgKLiIiIRK0goxbe9zRWte9M9+kTOe71Maw4shuf9D2d3XXqRh2eSIXRPfxFREREirCpeWtmnn8Nnx19Iq0+X0z/l56g5eeLIV7ee5+IVE1KBERERESKEU/P4LNjTmLm+dewMyuHo6eOp/ebY6m9fWvUoYkcMiUCIiIiIqXY2rg5s8+9ik/6DKDpiqX0f+kJDvvvAvUOSLWmREBERESkDOJpaSzr0ZcZF1zHlkbN6DF9IsdNeoG6WzZFHZrIQVEiICIiIlIO2xs05t1Bl/NRvzNpuHoluWOf5IiP56p3QKodJQIiIiIi5RWL8WWX3kwfcgMbWrSh6+w36Pvq82RtWhd1ZCJlpkRARERE5CDtrJ/D3DMvZsFJg8nauI4Txz1Fhw9nESvYE3VoIqVK6nMERERERGq8WIyVR3VnbZv2dJ31Op3mvkOLZc6i/gPZ0qRF1NGJFEuJgIiIiEgFyKubxfzTLqDFMqfrrNfpN/4Zlvbsy5JeJ1KQUfwpV7yggGnPP8a6r5aRlpHBgGt+TIPmrfaVf/zOZBa/M4lYWjrHDr6Ytr367Ctb8MZ4tm/ayAkXXZ3UfZOaSUODRERERCrQN+2M6UNuYGXHrhz54SxOfPkpGq5eUWz9pfPnkL87jwt//jtOGHI1s154al/Z9k0bWDRlAhf87AEG3/Ir5ox9lj27d5Oft4s3nxjBorcmVsYuSQ2lREBERESkgu2uXZdFJw3m/TMvJj0/n74TnqPz7DdI3513QN1Vny7miO7HANDiSGP18s/2la1e+iktj+xCeq1a1K6XRU6zVqz7ahl7du+mU78BHDPou5W2T1LzKBEQERERSZK1bTowfcj1fNHlGNp9PJfcsSNpsmLZfnXydm4ns269fctpaWkU7NlTZFlmnbrk7dhO7az6HN6td6Xsg9RcSgREREREkmhPrdos7vcd5gy6nHhaGn0m/Ytu0yeSsWsnAJl16pG3c8e++vGCOGnp6d+W7fq2LG/nDjLrZVXuDkiNpURAREREpBJsaHk4My64js979OWwTxfSf+yTNPviU1p27MwXC+cC8M0Sp3Gbtvu2ad7+KFZ9+jH5u/PYtX0bG1d9RePDjohqF6SG0V2DRERERCpJQUYt/ttnAKvad6b7tNc49o2XaNnO+FtaGmMf+BnEYcC1N/Hh5Jdp0LwV7Y4+nu6nncPLv7uTeLyA4y+4goxamVHvhtQQSgREREREKtnmpi2Zdd41dFg4myPnz+SXtWqz+OJr+LpDF4jFaNSqzb66XU8+k64nn1lkO51zT6+skKUG0tAgERERkQjE09NZcnQuM8+/lu05Den19isc88a/qb1tc9ShSYpQIiAiIiISoa2NmjF78JUsPv40mqxcTv+XnqTNJ/MhHo86NKnhlAiIiIiIRC0tjeXd+zD9wuvZ3LQl3WdOos9/RlN384aoI5MaTImAiIiISBWxI6cR7519GYtyzyJn7Sr6jx1Ju0XvQkFB1KFJDaTJwiIiIiJVSSzGV3Y0a9p0oNvMyXR+9y3Sd+9mSe/cqCOTEpjZUOBmYAtwubsvSyhrAowGWgGj3f3ecP1g4LdAPvA9d59rZgbMBvZuP8Ldn0lGzEoERERERKqgXVk5fHDGRTRdsZTt2Q2jDkdKYGbNgDuAnsApwEPAkIQqdwHjgL8BM8xsPLAYeAToCzQDngGOBRoA49z9umTHraFBIiIiIlVVLMbaNh3Y3qBx1JGkrIkTJ7Y0s3aFXoUzszOBue6+HZgE5JpZLKF8MDDF3QuAMeHy8cBqd1/t7h8BmWbWiiAR2Jj0HUOJgIiIiIhIsR588MEXgaWFXrcUqtYKcIDwZH8DkJi9NQeWhH+vAFonblNofQPgDDObZ2bjzKxlhe5QAiUCIiIiIiLFGD58+MVA+0Kvh4uomnhenQ0Uvv9rrIiyorb5D3A10A/4Erj3EMIvkeYIiIiIiIgUY+DAgasGDhy4rJRqKwnG+mNm2UAjgl6Bvb4BOgIfARbWXxn+vZcBK919KzAvbGsk8OdD34uiKREQERERETk0k4G7zaweMACYCFxiZq3dfQQwATjVzBYTTCa+nmCycBMza0EwdGi5u68ys0vC+juB84D3kxW0EgERERERkUPg7mvN7H5gDuHtQwnuGtQurHIvwe1DhwH/dPeFAGb2I+B1gtuHDg3r7g7XtQAWAdcmK24lAiIiIiIih8jdRwIjE1Y9lFC2nuDOQoW3mUjQe5C4biwwNklh7keThUVEREREUpASARERERGRFKREQEREREQkBSkREBERERFJQUoERERERERSkBIBEREREZEUpERARERERCQFKREQEREREUlBSgRERERERFKQEgERERERkRSkREBEREREJAUpERARERERSUFKBEREREREUpASARERERGRFKREQEREREQkBSkREBERERFJQUoERERERERSkBIBEREREZEUpERARERERCQFKREQEREREUlBSgRERERERFKQEgERERERkRSkREBEREREJAUpERARERERSUFKBEREREREUpASARERERGRFKREQEREREQkBSkREBERERFJQUoERERERERSkBIBEREREZEUpERARERERCQFKREQEREREUlBGcls3MyGAjcDW4DL3X1ZQlkTYDTQChjt7vcmMxYRERERkWQ5mPNeMxsM/BbIB77n7nPNLA14BDgZ+Ai4xt13JiPmpPUImFkz4A6gL3AP8FChKncB44CewGAz65msWEREREREkuVgznvNrBbBCf8ZwFXA42Hd84Bm7t4dWAZ8P1lxJ7NH4ExgrrtvN7NJwCgzi7l7PCwfDJzn7gVmNiZcXpDYgJk1BBomrhs5cuThubm5pKdHM6qpdXbdSN5XqoaMjGhH0+n4Ex2DEiUdfxKlyj7+9p5rvvnmm21++MMftitUvNHdNyYsH8x5bzaw2t1XA6vNLNPMWoVlU8LtXgDuB/4vCbuY1ESgFeAA4U5vABoD68Ly5sCS8O8VQG4RbdwC/CpxxeTJk8nNzSUnJ5ovg0t7t4vkfaVqaNQoK9L31/EnOgYlSjr+JEpRHX9PPPHEP4tY/Rvg1wnLB3Peu2+bhPWtC63fuy4pkjpHgP2HHmUD8ULlsRLKAB4GRiWu2Lx5c/1169ad1aRJkw+A3RUUp4iIiIhIolqrVq06pkGDBpOArYXKNhZR/2DOe4vbJq2IdRUumYnASoJxUphZNtAI2JBQ/g3QkWAShIX19xN2uRT1P3pRRQcrIiIiIpKoZcuWbz366KNlqXow570rw7/3Krz+DYo5R64oyRxsNRnobWb1gAHAROASM7s1LJ8AnBrOjD4FeDWJsYiIiIiIJMvBnPe+CzQxsxZm1gNY7u6r9tYNtzuVJJ4jJy0RcPe1BJMb5gA/B24HDgPah1XuJZgVvQAY5+4LkxWLiIiIiEiyHMx5r7vnAz8CXgeeBr4X1n0FWGVmi4A2fHs3oQoXi8eTNuxIRERERESqKD1ZWEREREQkBSkREBERERFJQUoERERERERSkBIBEREREZEUpERARERERCQFKRGQfcysvZm9Z2ZPRx1LIjP7edQxiCQys3PNrFvUcUjqMrM7oo5BaiYzO8fMFprZzWZ2c9TxSHIl88nCUsHMbChwM7AFuNzdlxUq/xVwJfBXdx9RqOyPwKhSntfwP8C/gd+XI6a3gIbhYlNgirtfE5bVAxz4X3d/uqS6pexjbTPr6+5zyhqXHDoz+xlwC/CAu/+piPKngOOBuwnujdw1LMoBvnL3U8J6aQQPTXnF3X9jZs8XVzeh7cHAb4F84HvuPrcccRfZvpmdBPwdqAU85O5/MbMWwGNAO2A18D/uvq5Qe+2BfwD1gRHuPpLgyZA/BX5Y1rik7MysPvBXoAewA7jS3T8vVGff9x3QGjgjLKoD1HP3tmbWheCzawD8y91/Xsa2mwCjgVbAaHe/t5zxXwT8DogDd7j7v82sE/AXoCWwGLjK3XcVc3wVbu8u4FKCp4te5u7rgY5m1sbdvypPbHJozOwI4BGgA8Hxc7W7Ly5UJ/G78UVgJMEDpFYA33X3VeFv3Q1AY+C37j4q3La03/mDPjbNLDPc9jJ3zyuh6k8I7mf/LjDGzB539x1lfR+pXtQjUE2YWTPgDoLHV98DPFRM1aGFkwAAd7+9DA9tOwr4xN0LyhqXu5/q7r3dvTfwcRjbXj8H1paxbkn7OAoYVtaYpMKMD18lGeTu/3L3KxI+2+nA/ybUuQ5I37tQSl3MrBbBD+0ZwFWU80EqJbT/e2Ao0BP4cZioHg/c7e5HAx8CtxXR5AiCB8H0BX5mZk3DE8c24UmlVLzuwPPhZ/g8hb4rEgx19xHuPjzhM38R+EVY/kvgj4ABuWZ2VBnbvgsYR3CsDDaznuWM/0/A6UA/4L5w3QnA9929BxADrg7XH3B8JTZkZkcD54SxjOXb4/kZvn34kFSefOCn7t6d4AFQPy2m3iB3/xfwHYKT9iOB54CbwhPyxkB/4ERghJlll/F3/qCPTXfPc/chpSQBsP+5wDjgsrK+h1Q/SgSqjzOBue6+HZhE8KMWK+vGZjbWzPZeof3IzO4zs0VmNsXMMs1sEMFV3YfM7LryBmdm5wML3P2zcLkdcBpFnEgWrlvaPoZXRFqWNyY5NOFVrpXl2SY8aanr7tPC5RyCpyb+vbS6CY4HVrv7anf/CMg0s1bljb+I9jcDy9x9G7AQKHD3V9z9g7B8OnBEoTZiwNnA1PC4nEzwww4wD+hS3rikdO4+290nhYsHfC7FMbOWwAB3fy5ctfcz302Q6OWVse3BBD2WBcCYcLk8vgG+CZ80+t9wn55x96WJ71vK8ZUYy9QwlhcSYpkJ9C5nXHKI3H2lu/83PGnvBJTWW7kZ+DL8/N4jOAbz3P337r4n7IFcBjSnbL/zh3RsmtmG8L+nmNnzZvacmS01s9+F639J0MP2jpn1AKYBx5XnPaR6USJQfbQiGGZD+AWwgeCKwsHoBPyH4IpCJsEP52sEJ+23uvtTeyua2XFm9q6Z/Z+ZNTKzIcW0+T3giYTlB4HhQFG9C4Xr7lXSPqaXJ/GRyAxl/8/2lwRX4reVoe5e+46D0AqCHyYgSDLNbLqZPWtmrcPx+pllaP//AWPDrvcF7r6zUP2+wAeF1jUhSEr2xp8Yy3KCq3ySXEV9LsW5kuCq6173ElzcuAHId/flZWy7ObAk/Lvw8Rczsz+b2SwzO9PMjgyTzkR3Aq+b2Y+Bl0vYp5KOr70SvxfXhdvg7vlA3SLaliQzs5MJLpJ0Ah4tpfpsgosZvyPoBXqyUFsNgGYEyUBZfucP9dhMdALB7/S+XlJ3vzvct5PCUQRfAe1L2UepxpQIVC+Jn1c2wfjTIpnZA2Y2z8wmFVG81d2nhV808yn5ansTgi7uhcAUoE0R75UJHOXuHi4PALa5+8zS6hahuH1cT/BlKVXbWcBbAOGY6J7uPrq0ukUo6VhvDXyXYJjEy8CJxXR1F27/GoJhIj0JrrTtSx7MrDVB9/cB47NLiGUlZbxSLQfHzLIJhmsdMEelGOcSXEnda+9negRwvJk1Kkfbey88FD7+6gGvAJcDNxL0dq1KaDdGkJD8nmBoUP9C+9QL6MW3vaVl+V5PC7etzf5z+9KLqCtJ5u7vEBwHsyh9Tt3e+UqzgZMI5qYkugv4m7vvCZfLcjwc1LFZhAXu/rW7bwGWEszd20/Ym1anhDakmtNk4epjJcFVpL0/YI0IrhYUyd3vIBhrWJrdfPulUlQ7e39U/04RwztC3Qm7v0OXAUeb2SyCxGGXma1w9zeKqJuopH1sQAn7K9Ezs8bAzvCHA+BioFV4HDQjmPT9ubs/W0TdRCsJxnTva5qEIUoJCeZL4avUWMzsMKCLu98GjDazUQRD1/4TXpEbTzApeVOhptYBTc2svrtvDWMZE5Y1BtaU/H9FDlaYqP0buL/wZN5i6scIemi+CJdrA5e4e59wOU4w4fbRMrT9DdCRYFJ44eNvG8EQHoCLitj2BGC7u78CvGJmU82ss7t/YmaHE0wMvsTd95hZScfXXon/Ho5i/xO7Ms/nkorl7rvN7GGCoUHFzROAYOLt39x9lpnNI5isOxEgHIbbg2+H95Tld/5Qjs2SFHkuEP67yi9nW1KNKBGoPiYDd4cTHAcAE909bmaXAq2LmiBciQ4juOMKAO6+b2KvBXf2WBYmAQfUNbN0gpO56ylmH8OqsWJOGqUSmdltwIpwElxhhY+D+wgnSprZNUA7d3+2qLphnaeB+wnuVNHEgjv6NAeWu3tJV7WKUrj9DKBHeEV4K0FXd93wZPFl4O/u/mZR+2lmrwEDzGwKwZjsG8NqRxBcEZQKFp58jALed/dnEtaX9H1XH9iV8J0B0CGcr/QFwcnTpjK2PQE41cwWE9zt5fpyhJ8BHBt+j0FwMaRumJy+BgwP574QfocfcHxZcGeYkcCQMJa/W3D3rVOBVxPeS9+JlSwcWjgt7NW+iGBIT0nfjRkEPQGzCIYS1Q3rn0PQI3VSOMwLyvY7fyjH5sFoQTAESWooJQLVhLuvNbP7gTmEtxULiw4juPVhlOoT3EbtYOpmEvQSZLn7F0XtowV3ZtGtyyqRBZNzXyMYNrbHzM519zPat1yqAAAD00lEQVQo+Vg7lOMAoBvQyN3zzexHwOsEV6KGlif2otp39+Vmdg/B1bs4wRW5l4EHCK7A1TazvQnsiey/n7cRXMX9LXCvf3t70W4Edw2RivcDgp7FOeFVVAiGg5X0fVf4M98Vzg2YTDCE5j2C8dxlaftegiu3w4B/eul3XNvH3aeZ2QSCK7Zx4El3n2dmLxAkBb8ys/uAje5+KkUcXxbcorI7kOnuC8zsFWABwdXfSwEsuAPSsrLGJRVmDvDXcDjhJuDacH27Yur/L/C0md1I8Lv2fQvuDPUvgvH3U8Lk9Bl3H1GG3/mDPjYPUg/gkyS/h0QoFo8XO8xcqpnw6vtUd3876lgqUngFZrO7vxB1LPItC+6V/esiJmDWeBbcDWmku3836lhSVU39visrM7sXGO/u70Ydi+yvJn03hsMof+Hu6hWooTRZWKqDUwkmhopUFRdQ9MRikcpylJIASSYzqwugJKBmUyJQs2wl6LK8NepAKtg1mh9QJW0imAx5adSBROA5wgl/Epma+n1XVldEHYAUq0Z8N3rwNOGDGZop1YiGBomIiIiIpCD1CIiIiIiIpCAlAiIiIiIiKUiJgIiIiIhIClIiICIiIiKSgvRAMRERIXzI0Rp3j4XLtxM8tTQfWAPc6O5LIgxRREQqmHoERERkP2Z2BnAD0M/dewEvAU9FG5WIiFQ09QiIiFRhZvYPYK67/zFc/gFwGrASOAHIBmLAUHefET4JtDFwJDDB3X9WQttDgPuA7cB7CUWrgB+4++Zw+X2g2HZERKR6Uo+AiEjV9nfg2oTla4EFQGuCK/ZdgaeBOxLq1HP3bqUkAS0Ino58kbsfCyzfW+bui9z97bBebeAB4MUK2RsREaky1CMgIlK1TQXqmNlxBFfumwH3Ap2AG83sSGAAsCVhm+llaLc/sNDdPw6XHwPuT6xgZs2AMQRPSr3z4HdBRESqIvUIiIhUYe4eB54ErgauC/8eBLwaVnkZeJRgeNBeW8vYfOI2+YkFZtaTYLjQB8CF7p5X7uBFRKRKUyIgIlL1jQLOAy4mmLT7HeAVd/8bwfj9C4D0crb5DtDNzHqFy9fuLTCzNsAU4G53v9Xd9xxS9CIiUiUpERARqeLcfRXBlfkF7r6SoAdggJktDNcvAdqbWZm/0919DXA58LyZfQC0Tyi+C8gCfmJm88PXnAraHRERqSJi8Xg86hhERERERKSSabKwiEgNZWbDgSuKKX7Q3Z+vzHhERKRqUY+AiIiIiEgK0hwBEREREZEUpERARERERCQFKREQEREREUlBSgRERERERFLQ/wfp1ynm3WlQygAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from toad.plot import bin_plot\n",
    "\n",
    "# Check the bin results of 'var_d2' of in-sample \n",
    "col = 'var_d2'\n",
    "\n",
    "# It's recommended to set 'labels = True' for better visualisation.\n",
    "bin_plot(c.transform(train_selected[[col,'target']], labels=True), x=col, target='target')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(2) ***OOT visualisation：*** toad.plot.badrate_plot(dataframe, target = 'target', x = None, by = None)\n",
    "\n",
    "Show the positive rates of each class across different time.\n",
    "\n",
    "    - target: target variable\n",
    "    \n",
    "    - x: time column, must be in string\n",
    "    \n",
    "    - by: feature column of interest\n",
    "\n",
    "<font color='red'>Note: the time column must be preprocessed and converted to string - timestamp is not supported</font> "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\nA feature is preferrable if the gaps between classes get wider as time goes by - it means the binned classes have larger difference. No line crossing means the bin results are stable.\\n'"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from toad.plot import badrate_plot\n",
    "\n",
    "col = 'var_d2'\n",
    "\n",
    "# Check the stability of 'var_d2''s bins across time\n",
    "#badrate_plot(c.transform(train[[col,'target','month']], labels=True), target='target', x='month', by=col)\n",
    "#badrate_plot(c.transform(OOT[[col,'target','month']], labels=True), target='target', x='month', by=col)\n",
    "\n",
    "badrate_plot(c.transform(data[[col,'target','month']], labels=True), target='target', x='month', by=col)\n",
    "'''\n",
    "A feature is preferrable if the gaps between classes get wider as time goes by - it means the binned classes have larger difference. No line crossing means the bin results are stable.\n",
    "'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n",
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a2d1b5f60>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Check the bin results of var_d5 of in-sample\n",
    "col = 'var_d5'\n",
    "\n",
    "# It's recommended to set 'labels = True' for categorical features.\n",
    "bin_plot(c.transform(train_selected[[col,'target']], labels=True), x=col, target='target')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(3) ***adjust bins：***c.set_rules(dict)\n",
    "\n",
    "the passed new bins will be updated - other feature bins are kept intact. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n",
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1282486d8>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# The IV is small, assume we want to seperate 'F' out to lift IV. \n",
    "\n",
    "# Set new bins \n",
    "rule = {'var_d5':[['O', 'nan'],['F'], ['M']]}\n",
    "\n",
    "# Pass new bins\n",
    "c.set_rules(rule)\n",
    "\n",
    "# Re-check both in-sample and OOT stability. \n",
    "bin_plot(c.transform(train_selected[['var_d5','target']], labels=True), x='var_d5', target='target')\n",
    "badrate_plot(c.transform(OOT[['var_d5','target','month']], labels=True), target='target', x='month', by='var_d5')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### <font color='blue'>###  III. WOE transformation</font>\n",
    "\n",
    "WOE transformation is applied after binning is tuned and finalised. The procedure is following:\n",
    "\n",
    "(1) ***Use the finalised Combiner to apply the binning:*** c.transform(dataframe, labels=False) \n",
    "\n",
    "    It only transform the binned features. \n",
    "\n",
    "(2) ***initialise woe transer:*** transer =  toad.transform.WOETransformer()\n",
    "\n",
    "(3) ***fit_transform:*** transer.fit_transform(dataframe, target, exclude = None)\n",
    "\n",
    "\n",
    "    Fit and apply WOE transformation, for in-sample data\n",
    "    \n",
    "    - target：target values in Series or DataFrame;\n",
    "    \n",
    "    - exclude: columns not be WOE transformed\n",
    "<font color='red'> Note: 1. \"fit_transform\" fits and transform all the data, even the ones not binned. Remember to exclude the unwanted columns. 2. Alwasy exlclude target column.</font>\n",
    "    \n",
    "(4)  ***Apply WOE transformation, typically to test / OOT data：***transer.transform(dataframe)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  APP_ID_C  target    var_d2    var_d3    var_d5    var_d6    var_d7  \\\n",
      "0    app_1       0 -0.178286  0.046126  0.090613  0.047145  0.365305   \n",
      "1    app_2       0 -1.410248  0.046126 -0.271655  0.047145 -0.734699   \n",
      "2    app_3       0 -0.178286  0.046126  0.090613  0.047145  0.365305   \n",
      "\n",
      "    var_d11    var_b3    var_b9  ...  var_l_60  var_l_64  var_l_68  var_l_71  \\\n",
      "0 -0.152228 -0.141182 -0.237656  ...  0.132170  0.080656  0.091919  0.150975   \n",
      "1 -0.152228  0.199186  0.199186  ...  0.132170  0.080656  0.091919  0.150975   \n",
      "2 -0.152228 -0.141182  0.388957  ... -0.926987 -0.235316 -0.883896 -0.385976   \n",
      "\n",
      "   var_l_89  var_l_91  var_l_107  var_l_119  var_l_123    month  \n",
      "0  0.091901  0.086402  -0.034434   0.027322   0.087378  2019-03  \n",
      "1  0.091901  0.086402  -0.034434   0.027322   0.087378  2019-03  \n",
      "2  0.091901 -0.620829  -0.034434  -0.806599  -0.731941  2019-03  \n",
      "\n",
      "[3 rows x 34 columns]\n"
     ]
    }
   ],
   "source": [
    "# Initialise\n",
    "transer = toad.transform.WOETransformer()\n",
    "\n",
    "# transer.fit_transform() & combiner.transform(). Remember to exclude target\n",
    "train_woe = transer.fit_transform(c.transform(train_selected), train_selected['target'], exclude=to_drop+['target'])\n",
    "OOT_woe = transer.transform(c.transform(OOT))\n",
    "\n",
    "print(train_woe.head(3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### <font color='blue'>###  IV.Stepwise regression feature selection</font>\n",
    "---------------\n",
    "\n",
    "6. ***toad.selection.stepwise(dataframe, target='target', estimator='ols', direction='both', criterion='aic', max_iter=None, return_drop=False, exclude=None): ***\n",
    "\n",
    "Stepwise regression feature selection, supports forward, backward, and both-direction (recommended):\n",
    "\n",
    "    - estimator: the regression model to fit, support 'ols', 'lr', 'lasso', 'ridge' \n",
    "    \n",
    "    - direction: stepwise direction, support 'forward', 'backward', 'both' (recommended)\n",
    "    \n",
    "    - criterion: selection criteria, support 'aic', 'bic', 'ks', 'auc'\n",
    "    \n",
    "    - max_iter: maximum number of iterations\n",
    "    \n",
    "    - return_drop: whether to return a list of dropped column names\n",
    "    \n",
    "    - exclude: list of column to be from alogorithm, such as ID column and time column.\n",
    "    \n",
    "***tip: generally, direction = 'both' produces the best results. Setting estimator =  'ols' and criterion = 'aic' makes the stepwise fast and the results are sound for logistic regression.***\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(43576, 13)\n"
     ]
    }
   ],
   "source": [
    "# Apply stepwise regression on the WOE-transformed data\n",
    "final_data = toad.selection.stepwise(train_woe,target = 'target', estimator='ols', direction = 'both', criterion = 'aic', exclude = to_drop)\n",
    "\n",
    "#  Place the selected features to test / OOT sample \n",
    "final_OOT = OOT_woe[final_data.columns]\n",
    "\n",
    "print(final_data.shape) #  Out of 31 features, stepwise regression selected 10 of them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The final list of features for modelling\n",
    "col = list(final_data.drop(to_drop+['target'],axis=1).columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "7. ***toad.metrics.PSI(df_train, df_test):***\n",
    "\n",
    "Ouput the PSI for each feature - used to check the OOT stability of WOE-transformed features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "var_d2      0.000254\n",
       "var_d5      0.000012\n",
       "var_d7      0.000079\n",
       "var_d11     0.000191\n",
       "var_b10     0.000209\n",
       "var_b18     0.000026\n",
       "var_b19     0.000049\n",
       "var_b23     0.000037\n",
       "var_l_20    0.000115\n",
       "var_l_68    0.000213\n",
       "dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "toad.metrics.PSI(final_data[col], final_OOT[col])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### <font color='blue'>###  V. Model evaluation and validation</font>\n",
    "---------------\n",
    "\n",
    "7. **Common evaluation metrics**: toad. metrics. KS, F1, AUC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/zhouxiyu/anaconda3/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# Build a logit\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "lr = LogisticRegression()\n",
    "lr.fit(final_data[col], final_data['target'])\n",
    "\n",
    "# Obtain predicted probability for training and OOT \n",
    "pred_train = lr.predict_proba(final_data[col])[:,1]\n",
    "\n",
    "pred_OOT_may =lr.predict_proba(final_OOT.loc[final_OOT.month == '2019-05',col])[:,1]\n",
    "pred_OOT_june =lr.predict_proba(final_OOT.loc[final_OOT.month == '2019-06',col])[:,1]\n",
    "pred_OOT_july =lr.predict_proba(final_OOT.loc[final_OOT.month == '2019-07',col])[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train KS 0.3707986228750539\n",
      "train AUC 0.75060723924743\n",
      "OOT结果\n",
      "5月 KS 0.3686687175756087\n",
      "6月 KS 0.3495273403486497\n",
      "7月 KS 0.3796914199845523\n"
     ]
    }
   ],
   "source": [
    "from toad.metrics import KS, AUC\n",
    "\n",
    "print('train KS',KS(pred_train, final_data['target']))\n",
    "print('train AUC',AUC(pred_train, final_data['target']))\n",
    "print('OOT results')\n",
    "print('5月 KS',KS(pred_OOT_may, final_OOT.loc[final_OOT.month == '2019-05','target']))\n",
    "print('6月 KS',KS(pred_OOT_june, final_OOT.loc[final_OOT.month == '2019-06','target']))\n",
    "print('7月 KS',KS(pred_OOT_july, final_OOT.loc[final_OOT.month == '2019-07','target']))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "***PSI also be used to gauge the stability of predicted proabilities***"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.12760761722158315\n",
      "0.1268648506657109\n",
      "0.1268648506657109\n"
     ]
    }
   ],
   "source": [
    "print(toad.metrics.PSI(pred_train,pred_OOT_may))\n",
    "print(toad.metrics.PSI(pred_train,pred_OOT_june))\n",
    "print(toad.metrics.PSI(pred_train,pred_OOT_june))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "8. ***toad.metrics.KS_bucket(predicted_proba, y_true, bucket=10, method = 'quantile'):***\n",
    "\n",
    "output the evaluative information of binned predicted probability, including the probability range, no. of samples, bad rate, KS of each probability bin. \n",
    "\n",
    "    - bucket：no. of bins\n",
    "    \n",
    "    - method：method of binning. Recommend to use 'quantile' or 'step' \n",
    "    \n",
    "<font color='red'> (1) the larger the difference of bad_rate between each group, the better the results; (2) can be used to check the monotonicity of groups of scores; (3) can be used to find the optimal cutoff point; (4) can be used to compare predictability of models </font>\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>min</th>\n",
       "      <th>max</th>\n",
       "      <th>bads</th>\n",
       "      <th>goods</th>\n",
       "      <th>total</th>\n",
       "      <th>bad_rate</th>\n",
       "      <th>good_rate</th>\n",
       "      <th>odds</th>\n",
       "      <th>bad_prop</th>\n",
       "      <th>good_prop</th>\n",
       "      <th>total_prop</th>\n",
       "      <th>cum_bads</th>\n",
       "      <th>cum_goods</th>\n",
       "      <th>cum_total</th>\n",
       "      <th>cum_bads_prop</th>\n",
       "      <th>cum_goods_prop</th>\n",
       "      <th>cum_total_prop</th>\n",
       "      <th>ks</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.000275</td>\n",
       "      <td>0.003380</td>\n",
       "      <td>9</td>\n",
       "      <td>4332</td>\n",
       "      <td>4341</td>\n",
       "      <td>0.002073</td>\n",
       "      <td>0.997927</td>\n",
       "      <td>0.002078</td>\n",
       "      <td>0.009688</td>\n",
       "      <td>0.101578</td>\n",
       "      <td>0.099619</td>\n",
       "      <td>9</td>\n",
       "      <td>4332</td>\n",
       "      <td>4341</td>\n",
       "      <td>0.009688</td>\n",
       "      <td>0.101578</td>\n",
       "      <td>0.099619</td>\n",
       "      <td>-0.091890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.003398</td>\n",
       "      <td>0.005207</td>\n",
       "      <td>12</td>\n",
       "      <td>3585</td>\n",
       "      <td>3597</td>\n",
       "      <td>0.003336</td>\n",
       "      <td>0.996664</td>\n",
       "      <td>0.003347</td>\n",
       "      <td>0.012917</td>\n",
       "      <td>0.084062</td>\n",
       "      <td>0.082545</td>\n",
       "      <td>21</td>\n",
       "      <td>7917</td>\n",
       "      <td>7938</td>\n",
       "      <td>0.022605</td>\n",
       "      <td>0.185640</td>\n",
       "      <td>0.182164</td>\n",
       "      <td>-0.163035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.005207</td>\n",
       "      <td>0.008116</td>\n",
       "      <td>37</td>\n",
       "      <td>5071</td>\n",
       "      <td>5108</td>\n",
       "      <td>0.007244</td>\n",
       "      <td>0.992756</td>\n",
       "      <td>0.007296</td>\n",
       "      <td>0.039828</td>\n",
       "      <td>0.118906</td>\n",
       "      <td>0.117220</td>\n",
       "      <td>58</td>\n",
       "      <td>12988</td>\n",
       "      <td>13046</td>\n",
       "      <td>0.062433</td>\n",
       "      <td>0.304547</td>\n",
       "      <td>0.299385</td>\n",
       "      <td>-0.242114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.008125</td>\n",
       "      <td>0.010862</td>\n",
       "      <td>26</td>\n",
       "      <td>3854</td>\n",
       "      <td>3880</td>\n",
       "      <td>0.006701</td>\n",
       "      <td>0.993299</td>\n",
       "      <td>0.006746</td>\n",
       "      <td>0.027987</td>\n",
       "      <td>0.090370</td>\n",
       "      <td>0.089040</td>\n",
       "      <td>84</td>\n",
       "      <td>16842</td>\n",
       "      <td>16926</td>\n",
       "      <td>0.090420</td>\n",
       "      <td>0.394916</td>\n",
       "      <td>0.388425</td>\n",
       "      <td>-0.304497</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.010868</td>\n",
       "      <td>0.014651</td>\n",
       "      <td>59</td>\n",
       "      <td>4759</td>\n",
       "      <td>4818</td>\n",
       "      <td>0.012246</td>\n",
       "      <td>0.987754</td>\n",
       "      <td>0.012398</td>\n",
       "      <td>0.063509</td>\n",
       "      <td>0.111590</td>\n",
       "      <td>0.110565</td>\n",
       "      <td>143</td>\n",
       "      <td>21601</td>\n",
       "      <td>21744</td>\n",
       "      <td>0.153929</td>\n",
       "      <td>0.506507</td>\n",
       "      <td>0.498990</td>\n",
       "      <td>-0.352578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.014661</td>\n",
       "      <td>0.019846</td>\n",
       "      <td>76</td>\n",
       "      <td>3901</td>\n",
       "      <td>3977</td>\n",
       "      <td>0.019110</td>\n",
       "      <td>0.980890</td>\n",
       "      <td>0.019482</td>\n",
       "      <td>0.081808</td>\n",
       "      <td>0.091472</td>\n",
       "      <td>0.091266</td>\n",
       "      <td>219</td>\n",
       "      <td>25502</td>\n",
       "      <td>25721</td>\n",
       "      <td>0.235737</td>\n",
       "      <td>0.597979</td>\n",
       "      <td>0.590256</td>\n",
       "      <td>-0.362241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.019858</td>\n",
       "      <td>0.025968</td>\n",
       "      <td>116</td>\n",
       "      <td>4665</td>\n",
       "      <td>4781</td>\n",
       "      <td>0.024263</td>\n",
       "      <td>0.975737</td>\n",
       "      <td>0.024866</td>\n",
       "      <td>0.124865</td>\n",
       "      <td>0.109386</td>\n",
       "      <td>0.109716</td>\n",
       "      <td>335</td>\n",
       "      <td>30167</td>\n",
       "      <td>30502</td>\n",
       "      <td>0.360603</td>\n",
       "      <td>0.707365</td>\n",
       "      <td>0.699972</td>\n",
       "      <td>-0.346762</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.025986</td>\n",
       "      <td>0.032467</td>\n",
       "      <td>108</td>\n",
       "      <td>4188</td>\n",
       "      <td>4296</td>\n",
       "      <td>0.025140</td>\n",
       "      <td>0.974860</td>\n",
       "      <td>0.025788</td>\n",
       "      <td>0.116254</td>\n",
       "      <td>0.098202</td>\n",
       "      <td>0.098586</td>\n",
       "      <td>443</td>\n",
       "      <td>34355</td>\n",
       "      <td>34798</td>\n",
       "      <td>0.476857</td>\n",
       "      <td>0.805567</td>\n",
       "      <td>0.798559</td>\n",
       "      <td>-0.328710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.032484</td>\n",
       "      <td>0.044998</td>\n",
       "      <td>173</td>\n",
       "      <td>4187</td>\n",
       "      <td>4360</td>\n",
       "      <td>0.039679</td>\n",
       "      <td>0.960321</td>\n",
       "      <td>0.041318</td>\n",
       "      <td>0.186222</td>\n",
       "      <td>0.098178</td>\n",
       "      <td>0.100055</td>\n",
       "      <td>616</td>\n",
       "      <td>38542</td>\n",
       "      <td>39158</td>\n",
       "      <td>0.663079</td>\n",
       "      <td>0.903745</td>\n",
       "      <td>0.898614</td>\n",
       "      <td>-0.240666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.045115</td>\n",
       "      <td>0.370055</td>\n",
       "      <td>313</td>\n",
       "      <td>4105</td>\n",
       "      <td>4418</td>\n",
       "      <td>0.070847</td>\n",
       "      <td>0.929153</td>\n",
       "      <td>0.076248</td>\n",
       "      <td>0.336921</td>\n",
       "      <td>0.096255</td>\n",
       "      <td>0.101386</td>\n",
       "      <td>929</td>\n",
       "      <td>42647</td>\n",
       "      <td>43576</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        min       max  bads  goods  total  bad_rate  good_rate      odds  \\\n",
       "0  0.000275  0.003380     9   4332   4341  0.002073   0.997927  0.002078   \n",
       "1  0.003398  0.005207    12   3585   3597  0.003336   0.996664  0.003347   \n",
       "2  0.005207  0.008116    37   5071   5108  0.007244   0.992756  0.007296   \n",
       "3  0.008125  0.010862    26   3854   3880  0.006701   0.993299  0.006746   \n",
       "4  0.010868  0.014651    59   4759   4818  0.012246   0.987754  0.012398   \n",
       "5  0.014661  0.019846    76   3901   3977  0.019110   0.980890  0.019482   \n",
       "6  0.019858  0.025968   116   4665   4781  0.024263   0.975737  0.024866   \n",
       "7  0.025986  0.032467   108   4188   4296  0.025140   0.974860  0.025788   \n",
       "8  0.032484  0.044998   173   4187   4360  0.039679   0.960321  0.041318   \n",
       "9  0.045115  0.370055   313   4105   4418  0.070847   0.929153  0.076248   \n",
       "\n",
       "   bad_prop  good_prop  total_prop  cum_bads  cum_goods  cum_total  \\\n",
       "0  0.009688   0.101578    0.099619         9       4332       4341   \n",
       "1  0.012917   0.084062    0.082545        21       7917       7938   \n",
       "2  0.039828   0.118906    0.117220        58      12988      13046   \n",
       "3  0.027987   0.090370    0.089040        84      16842      16926   \n",
       "4  0.063509   0.111590    0.110565       143      21601      21744   \n",
       "5  0.081808   0.091472    0.091266       219      25502      25721   \n",
       "6  0.124865   0.109386    0.109716       335      30167      30502   \n",
       "7  0.116254   0.098202    0.098586       443      34355      34798   \n",
       "8  0.186222   0.098178    0.100055       616      38542      39158   \n",
       "9  0.336921   0.096255    0.101386       929      42647      43576   \n",
       "\n",
       "   cum_bads_prop  cum_goods_prop  cum_total_prop        ks  \n",
       "0       0.009688        0.101578        0.099619 -0.091890  \n",
       "1       0.022605        0.185640        0.182164 -0.163035  \n",
       "2       0.062433        0.304547        0.299385 -0.242114  \n",
       "3       0.090420        0.394916        0.388425 -0.304497  \n",
       "4       0.153929        0.506507        0.498990 -0.352578  \n",
       "5       0.235737        0.597979        0.590256 -0.362241  \n",
       "6       0.360603        0.707365        0.699972 -0.346762  \n",
       "7       0.476857        0.805567        0.798559 -0.328710  \n",
       "8       0.663079        0.903745        0.898614 -0.240666  \n",
       "9       1.000000        1.000000        1.000000  0.000000  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Group the predicted scores in bins with same number of samples in each (i.e. \"quantile\" binning)\n",
    "toad.metrics.KS_bucket(pred_train, final_data['target'], bucket=10, method = 'quantile')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### <font color='blue'>###  VI. Standard scorecard transformation</font>\n",
    "---------------\n",
    "\n",
    "6. **toad.ScoreCard( combiner = {}, transer = None, pdo = 60, rate = 2, base_odds = 20, base_score = 750, card = None, C=0.1,**kwargs): \n",
    "\n",
    "Convert logit into a standard scorecard. Support direct input of parameters of a LogisticRegression class.\n",
    "\n",
    "    - combiner: input the pre-fitted toad.Combiner class\n",
    "    \n",
    "    - transer: input the per-fitted toad.WOETransformer class\n",
    "    \n",
    "    - pdo、rate、base_odds、base_score: \n",
    "     e.g. pdo=60, rate=2, base_odds=20,base_score=750\n",
    "          it means when odds is 1/60, the base socre is 750, and t\n",
    "   \n",
    "    - card: 支持传入专家评分卡 pre-defined scorecard\n",
    "    \n",
    "    - **kwargs: support to input parameters of a logistic regression class (i.e. sklearn.linear_model.LogisticRegression)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/zhouxiyu/anaconda3/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "ScoreCard(base_odds=35, base_score=750, card=None,\n",
       "          combiner=<toad.transform.Combiner object at 0x1a2434fdd8>, pdo=60,\n",
       "          rate=2,\n",
       "          transer=<toad.transform.WOETransformer object at 0x1a235a5358>)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "card = toad.ScoreCard(\n",
    "    combiner = c,\n",
    "    transer = transer,\n",
    "    #class_weight = 'balanced',\n",
    "    #C=0.1,\n",
    "    #base_score = 600,\n",
    "    #base_odds = 35 ,\n",
    "    #pdo = 60,\n",
    "    #rate = 2\n",
    ")\n",
    "\n",
    "card.fit(final_data[col], final_data['target'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'var_d2': {'[-inf ~ 747.0)': 65.54,\n",
       "  '[747.0 ~ 782.0)': 45.72,\n",
       "  '[782.0 ~ 820.0)': 88.88,\n",
       "  '[820.0 ~ inf)': 168.3},\n",
       " 'var_d5': {'O,nan': 185.9, 'F': 103.26, 'M': 68.76},\n",
       " 'var_d7': {'LARGE FLEET OPERATOR,COMPANY,STRATEGIC TRANSPRTER,SALARIED,HOUSEWIFE': 120.82,\n",
       "  'DOCTOR-SELF EMPLOYED,nan,SAL(RETIRAL AGE 60),SERVICES,SAL(RETIRAL AGE 58),OTHERS,DOCTOR-SALARIED,AGENT,CONSULTANT,DIRECTOR,MEDIUM FLEETOPERATOR,TRADER,RETAIL TRANSPORTER,MANUFACTURING,FIRST TIME USERS,STUDENT,PENSIONER': 81.32,\n",
       "  'PROPRIETOR,TRADING,STRATEGIC CAPTIVE,SELF-EMPLOYED,SERV-PRIVATE SECTOR,SMALL RD TRANS.OPR,BUSINESSMAN,CARETAKER,RETAIL,AGRICULTURIST,RETIRED PERSONNEL,MANAGER,CONTRACTOR,ACCOUNTANT,BANKS SERVICE,GOVERNMENT SERVICE,ADVISOR,STRATEGIC S1,SCHOOLS,TEACHER,GENARAL RETAILER,RESTAURANT KEEPER,OFFICER,POLICEMAN,SERV-PUBLIC SECTOR,BARRISTER,Salaried,SALESMAN,RETAIL CAPTIVE,Defence (NCO),STRATEGIC S2,OTHERS NOT DEFINED,JEWELLER,SECRETARY,SUP STRAT TRANSPORT,LECTURER,ATTORNEY AT LAW,TAILOR,TECHNICIAN,CLERK,PLANTER,DRIVER,PRIEST,PROGRAMMER,EXECUTIVE ASSISTANT,PROOF READER,STOCKBROKER(S)-COMMD,TYPIST,ADMINSTRATOR,INDUSTRY,PHARMACIST,Trading,TAXI DRIVER,STRATEGIC BUS OP,CHAIRMAN,CARPENTER,DISPENSER,HELPER,STRATEGIC S3,RETAIL BUS OPERATOR,GARAGIST,PRIVATE TAILOR,NURSE': 55.79},\n",
       " 'var_d11': {'N': 88.69, 'U': 23.72},\n",
       " 'var_b10': {'[-inf ~ -8888.0)': 67.76,\n",
       "  '[-8888.0 ~ 0.548229531)': 97.51,\n",
       "  '[0.548229531 ~ inf)': 36.22},\n",
       " 'var_b18': {'[-inf ~ 2)': 83.72, '[2 ~ inf)': 39.23},\n",
       " 'var_b19': {'[-inf ~ -9999)': 70.78, '[-9999 ~ 4)': 97.51, '[4 ~ inf)': 42.2},\n",
       " 'var_b23': {'[-inf ~ -8888)': 64.51, '[-8888 ~ inf)': 102.69},\n",
       " 'var_l_20': {'[-inf ~ 0.000404297)': 78.55,\n",
       "  '[0.000404297 ~ 0.003092244)': 103.85,\n",
       "  '[0.003092244 ~ inf)': 36.21},\n",
       " 'var_l_68': {'[-inf ~ 0.000255689)': 70.63,\n",
       "  '[0.000255689 ~ 0.002045513)': 24.56,\n",
       "  '[0.002045513 ~ 0.007414983000000002)': 66.63,\n",
       "  '[0.007414983000000002 ~ 0.019943748)': 99.55,\n",
       "  '[0.019943748 ~ inf)': 142.36}}"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Output standard scorecard \n",
    "card.export()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### <font color='blue'>###  VII. Other functions </font>\n",
    "\n",
    "--------------------\n",
    "\n",
    "***toad.transform.GBDTTransformer ***\n",
    "\n",
    " GBDT encoding - pre-processing for gbdt + lr technique. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/zhouxiyu/anaconda3/lib/python3.7/site-packages/sklearn/preprocessing/_encoders.py:415: FutureWarning: The handling of integer data will change in version 0.22. Currently, the categories are determined based on the range [0, max(values)], while in the future they will be determined based on the unique values.\n",
      "If you want the future behaviour and silence this warning, you can specify \"categories='auto'\".\n",
      "In case you used a LabelEncoder before this OneHotEncoder to convert the categories to integers, then you can now use the OneHotEncoder directly.\n",
      "  warnings.warn(msg, FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<toad.transform.GBDTTransformer at 0x1a2daf60f0>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gbdt_transer = toad.transform.GBDTTransformer()\n",
    "gbdt_transer.fit(final_data[col+['target']], 'target', n_estimators = 10, max_depth = 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "gbdt_vars = gbdt_transer.transform(final_data[col])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(43576, 40)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gbdt_vars.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}